Questão 76 · Informática: Banco de dados
Analise o comando SQL a seguir. select x, sum (nota) as soma, count (nota) as numero from inscricao group by x having???
Assinale a opção que indica a expressão que, ao ser utilizada para substituir o trecho “???”, invalida o comando SQL acima.
- A) count (nota) > 1
- B) x=2
- C) max (nota) = 10
- D) nota > 7
- E) (select max(nota) from inscricao) > 5
Marque a alternativa correta:
Gabarito: D
Gabarito definitivo divulgado pela banca FGV (DPE/MT 2015).
Comentário
Gabarito: D.
No SQL, a cláusula HAVING filtra grupos depois do GROUP BY. As condições do HAVING só podem usar, da consulta externa, colunas do GROUP BY ou funções de agregação (além de constantes e subconsultas independentes). O comando agrupa por x, e a coluna nota aparece apenas dentro de SUM e COUNT.
Quando a expressão do HAVING é nota > 7, a coluna nota aparece solta, fora de função de agregação e fora do GROUP BY. Essa referência é inválida, pois um grupo tem várias notas e não há um único valor de nota para comparar. Por isso a alternativa D é a que invalida o comando.
As demais são válidas:
- (A) COUNT(nota) > 1: função de agregação no HAVING.
- (B) x = 2: coluna do GROUP BY.
- (C) MAX(nota) = 10: função de agregação.
- (E) (SELECT MAX(nota) FROM inscricao) > 5: subconsulta que retorna um único valor, independente do grupo.
Dica: toda coluna da consulta externa usada no HAVING precisa estar no GROUP BY ou dentro de uma função de agregação.
Fundamentos: Cláusula HAVING e agregação · GROUP BY e colunas não agregadas · Subconsultas escalares em HAVING
Comentário gerado pela Cravei IA a partir do enunciado e do gabarito definitivo divulgado pela banca, e conferido por uma verificação automática. A IA pode errar: o gabarito oficial sempre prevalece.
Fonte: prova FGV DPE/MT 2015 (Analista de Sistemas), questão 76, com o gabarito definitivo da banca. Comentário: Equipe Cravei · como fazemos e revisamos.