Buscar

Trabalho Projeto Otimização Banco de Dados

Prévia do material em texto

Universidade Estácio de Sá 
Pós-Graduação em Engenharia de Software 
Disciplina: Projeto e Otimização de Banco de Dados 
Professor: Renato Augusto dos Santos Cortes 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Recife 
2018 
Escreva as sentenças em SQL para responder as seguintes proposições: 
 
a) Código e nome das disciplinas com carga horária entre 3 e 5 inclusive e que não sejam da área de 
Saúde. 
 
Select CodD, NomeD 
From Disciplina 
Where CargaD between 3 and 5 
and AreaD <> 'Saúde' 
 
b) Nome das disciplinas com carga horária menor que 5 e que sejam ministradas por professores 
doutores. 
 
Select distinct d.NomeD 
From Disciplina d 
join Grade g on g.CodD = d.CodD 
join Professor p on p.CodP = g.CodP 
where d.CargaD < 5 
and p.TituloP = 'Doutor' 
 
c) Salas onde haverá aulas cujos cursos possuam duração superior a 3 anos e cujas disciplinas não 
sejam nem da área de Matemática, nem de Saúde e nem de Humanas e cujo professor seja Paulo, 
Joaquim ou Juliana. 
 
Select distinct g.Sala 
From Grade g 
Join Curso c on c.CodC = g.CodC 
join Disciplina d on d.CodD = g.CodD 
Join Professor p on p.CodP = g.CodP 
Where c.DuracaoC > 3 
and ((d.AreaD not in ('Matematica', 'Saúde', 'Humanas')) 
or (d.AreaD is null)) 
and p.NomeP in ('Paulo', 'Joaquim', 'Juliana') 
 
d) Nomes dos professores que não ministram nenhuma disciplina. 
 
Select p.NomeP 
From Professor p 
Where p.CodP not in 
(Select distinct g.CodP from Grade g) 
 
 
e) Nomes das disciplinas e o nome dos respectivos pré-requisitos. 
 
Select d1.NomeD Disciplina , d2.NomeD PreReq 
From Disciplina d1 
Join Disciplina d2 on d2.CodD = d1.PreReqD 
 
f) Nome das disciplinas que possuam carga horária maior que todas as disciplinas da área de 
Matemática. 
 
Select d.NomeD 
From Disciplina d 
Where d.CargaD > 
(Select Max(d2.CargaD) from Disciplina d2 
 Where d2.AreaD = 'Matemática') 
 
g) Código de cada disciplina, com a quantidade de cursos em que a mesma é oferecida. 
 
Select d.CodD, 
(Select count(distinct g.CodC) from grade g 
 Where g.CodD = d.CodD) as Qtd_cursos 
From Disciplina d 
 
h) Carga horária média das áreas com carga horária média maior ou igual a 3. 
 
Select d.AreaD, Avg(d.CargaD) as CargMed 
From Disciplina d 
Group by d.AreaD 
Having Avg(d.CargaD) >= 3 
 
i) Nome das disciplinas que não têm pré-requisito e que não são pré-requisito. 
 
Select d.NomeD 
From Disciplina d 
Where d.PreReqD is null 
And d.CodD not in 
(Select distinct d2. preReqD 
 from Disciplina d2 
 Where d2.preReqD is not null) 
 
j) Nome dos cursos que têm a mesma duração do curso de Engenharia Elétrica e que têm 
mensalidade maior que a sua. 
 
Select c.NomeC 
from Curso c 
where c.DuracaoC = (select c2.DuracaoC from Curso c2 where 
c2.NomeC = 'Eng Elétrica') 
and c.MensC > (select c2.MensC from Curso c2 where c2. NomeC = 
'Eng Elétrica') 
and c.NomeC <> 'Eng Elétrica'

Continue navegando