-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSQLQuery_16.sql
125 lines (109 loc) · 2.88 KB
/
SQLQuery_16.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
CREATE DATABASE Exercicio_3
GO
use Exercicio_3
GO
CREATE TABLE pacientes
(
CPF VARCHAR(11) NOT NULL,
nome VARCHAR(70) NOT NULL,
rua VARCHAR(50) NOT NULL,
numero INT NOT NULL,
bairro VARCHAR(20) NOT NULL,
telefone CHAR(8) NULL
PRIMARY KEY (CPF)
)
GO
CREATE TABLE medico
(
codigo INT NOT NULL,
nome VARCHAR(70) NOT NULL,
especialidade VARCHAR(30)
PRIMARY KEY (codigo)
)
GO
CREATE TABLE prontuario
(
data DATETIME NOT NULL,
CPF_paci VARCHAR(11) NOT NULL,
cod_med INT NOT NULL,
diagnos VARCHAR(200) NOT NULL,
medicame VARCHAR(100) NOT NULL
PRIMARY KEY (data)
FOREIGN KEY (CPF_paci) REFERENCES pacientes(CPF),
FOREIGN KEY (cod_med) REFERENCES medico(codigo),
)
-- 1) Nome e Endereço (concatenado) dos pacientes com mais de 50 anos
SELECT nome, rua+' , ' + CAST(numero AS VARCHAR(5)) + ', ' + bairro AS eendereco_completo
FROM pacientes
-- 2) Qual a especialidade de Carolina Oliveira
SELECT especialidade
FROM medico
WHERE nome LIKE 'Carolina%'
-- 3) Qual medicamento receitado para reumatismo
SELECT medicame
FROM prontuario
WHERE diagnos LIKE 'reumatismo'
-- Consultar em subqueries:
-- 1) Diagnóstico e Medicamento do paciente José Rubens em suas consultas
SELECT diagnos, medicame
FROM prontuario
WHERE CPF_paci IN
(
SELECT CPF
FROM pacientes
WHERE nome LIKE 'José Rubens'
)
-- 2) Nome e especialidade do(s) Médico(s) que atenderam José Rubens.
--Caso a especialidade tenha mais de 3 letras, mostrar apenas as 3 primeiras letras concatenada com um ponto final (.)
SELECT nome, especialidade
FROM medico
WHERE codigo IN
(
SELECT cod_med
FROM prontuario
WHERE CPF_paci IN
(
SELECT CPF
FROM pacientes
WHERE nome LIKE 'José Rubens'
)
)
-- 3) CPF (Com a máscara XXX.XXX.XXX-XX),
-- Nome, Endereço completo (Rua, nº - Bairro), Telefone (Caso nulo, mostrar um traço (-)) dos pacientes do médico Vinicius
SELECT SUBSTRING(CPF, 1,3)+'.'+SUBSTRING(CPF, 4, 3)+'.'+SUBSTRING(CPF,7,3)+'-'+SUBSTRING(CPF, 10, 11) AS CPF,nome,
rua+' , ' + CAST(numero AS VARCHAR(5)) + ', ' + bairro AS endereco_completo,
CASE WHEN telefone > LEN(0) THEN
telefone
ELSE
'-'
END AS Telefone
FROM pacientes
WHERE CPF IN
(
SELECT CPF_paci
FROM prontuario
WHERE cod_med IN
(
SELECT codigo
FROM medico
WHERE nome LIKE 'Vinicius%'
)
)
-- 4) Quantos dias fazem da consulta de Maria Rita até hoje
SELECT DISTINCT DATEDIFF(DAY, data, GETDATE()) AS dias_ate_hoje
FROM prontuario
WHERE CPF_paci IN
(
SELECT CPF
FROM pacientes
WHERE nome LIKE '%Maria Rita%'
)
--Alterações
-- 1) Alterar o telefone da paciente Maria Rita, para 98345621
UPDATE pacientes
SET telefone = '98345621'
WHERE nome LIKE 'Maria Rita'
-- 2) Alterar o Endereço de Joana de Souza para Voluntários da Pátria, 1980, Jd. Aeroporto
UPDATE pacientes
SET rua = 'Voluntários da Pátria', numero = 1980, bairro = 'Jd. Aeroporto'
WHERE nome LIKE 'Joana de Souza'