Com relação às Tabelas ALUNO, DISCIPLINA e NOTAS, qual coman...
![](https://s3.amazonaws.com/qcon-assets-production/images/provas/56582/e60f01547f6b19bb491d.png)
IMPRIMIR: DisciplinasPorNome, MédiaDeNotaDisplina
______________________________________________
1)Remover alternativa que não seleciona Disciplina Nome ((Requisito do enunciado é selecionar))
( A ) -> Apenas seleciona a Media
2)Remover condições na seleção que seja diferente de AVG -> (Lembrando que para se obter a Média utiliza o AVG)
( C ) -> MED não existe / (D) -> SUM Faz soma em vez de Media
3) Sobrando alternativas (B) e (E)
->>>Alternativa (B) como não existe agrupamento será realizada uma media com todas as disciplinas resultante do
Join = Lembrando que retorna tudo que existe em ambas tabelas, valores exclusivos de alguma tabela na comparação fica de fora, nesse caso a displica 3 não possui correspondencia em Notas logo não entra.
Ou todas as notas da tabela Notas serão somadas e divididas pela quantidade de notas retornando somente uma única média 10+5+4+5+8+6/6 = 6,333333
->>Alternativa (E) Correta o comando é igual a alternativa (B) com um final diferente ele utiliza a condição de agrupamento GROUP BY fazendo a media em vez de geral faz por disciplina.
As funções agregadas do sql são:
- Sum = Soma,
- Count (Verifica o numero de linhas)
- AVG = média
- MIN = Minimo
- Max = máximo
Solução:
Alternativa A está incorreta pois ,faz a consulta apenas do campo Nota.,
No enunciado pede Lista de disciplinas por nome e media. Deveria ser (SELECT D.NOME, AVG(N.NOTA)
Alternativa B está incorreta pois deveria ter o agrupamento Group by
- gruup by é o pulo do gato para essa questão.
Alternativa C está incorreta MED(N.NOTA) , deveria ser AVG para a média
Alternativa D está incorreta pois está fazendo a soma e não calculando a média.
E também deveria ter a clausula having (
Criar um filtro /
Como se fosse um where/
deve vir após o agrupamento)
Alternativa E está correta pois , traz todos os campos conforme o pedido do enunciado.
ON N.DISCIPLINA_ID = D.DISCIPLINA_ID = campos das chaves que ligam uma tabela a outra.
Group by que agrupa pelo Nome das disciplinas por determinada ocorrência e faz a média.
ex:
O nome da disciplina AD por duas vezes e depois faz a media
SELECT D.NOME, AVG(N.NOTA) AS MEDIA FROM NOTAS N JOIN DISCIPLINA D ON N.DISCIPLINA_ID = D.DISCIPLINA_ID GROUP BY D.NOME