O Projeto e Otimização de Banco de Dados
Por: marcellaamelo • 25/1/2020 • Trabalho acadêmico • 852 Palavras (4 Páginas) • 302 Visualizações
[pic 2]
UNIVERSIDADE ESTÁCIO DE SÁ
PÓS-GRADUAÇÃO EM ENGENHARIA DE SOFTWARE
Marcella Alves de Melo
Trabalho da disciplina Projeto e Otimização de BD
Professor: Renato Cortes
Tutor: Prof. Adriana Aparicio Sicsu
Belo Horizonte/MG
2019
Sentenças em SQL
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 NomeD
from disciplina D
inner join Grade G
on D.CodD = G.CodD
inner join Professor P
on G.CodP = P.CodP
where D.CargaD < 5
and P.TituloP = 'Doutor'
Nota: utilização do distinct pois a disciplina Ed. Física é ministrada tanto por André quanto por Gil.
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 Sala
from Grade G
inner join Disciplina D
on D.CodD = G.CodD
inner join Professor P
on G.CodP = P.CodP
inner join Curso C
on C.CodC = G.CodC
where CargaD > 3
and ISNULL(AreaD,'') not in ('Matemática','Saúde','Humanas')
and NomeP in ('Joaquim','Paulo','Juliana')
Nota 1: Não existe registro na tabela grade para Juliana.
Nota 2: Foi utilizada a função ISNULL pois a coluna AreaD possui valores nulos e que não seriam considerados na cláusula Where.
d) Nomes dos professores que não ministram nenhuma disciplina.
select NomeP
from Grade G
right join Professor P
on G.CodP = P.CodP
where G.CodP is null
Nota: Foi utilizado RIGHT JOIN com filtro IS NULL na cláusula where pois quer saber apenas os professores da tabela Professor que não existe correspondência na tabela Grade.
e) Nomes das disciplinas e o nome dos respectivos pré-requisitos.
Select Dis.NomeD as NomeDisciplina, PreReq.NomeD as NomePreRequisito
from Disciplina as Dis
left join Disciplina as PreReq
on Dis.PreReqD = PreReq.CodD
f) Nome das disciplinas que possuam carga horária maior que todas as disciplinas da área de Matemática.
Select NomeD
from Disciplina
where CargaD > (select max(cargaD) from Disciplina where AreaD = 'Matemática')
g) Código de cada disciplina, com a quantidade de cursos em que a mesma é oferecida.
select CodD, Count(DISTINCT CodC) as quantidade
from Grade
group by CodD
h) Carga horária média das áreas com carga horária média maior ou igual a 3.
select avg(CargaD) as CargaHorariaMedia
from Disciplina
where isnull(AreaD,'NULL') IN (
...