Com relação às Tabelas ALUNO, DISCIPLINA e NOTAS, qual coman...

Próximas questões
Com base no mesmo assunto
Q874202 Banco de Dados
Considere as Tabelas ALUNO, DISCIPLINA e NOTAS a seguir para responder à questão.




Com relação às Tabelas ALUNO, DISCIPLINA e NOTAS, qual comando SQL (padrão ANSI) lista as disciplinas pelo NOME com a respectiva média de NOTA na disciplina?
Alternativas

Comentários

Veja os comentários dos nossos alunos

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

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo