Qual comando modificador é usado em linguagem SQL em ORACLE para filtrar os resultados após o GROUP BY, com base em condições de agregação?
- A)WHILE
WHILE é uma estrutura de repetição de programação, não uma cláusula de filtro em SQL.
- B)ORDER BY
ORDER BY serve para ordenar o resultado, não para aplicar condição de agregação após o GROUP BY.
- C)WHEN
WHEN aparece em expressões condicionais, como CASE, mas não é a cláusula usada para filtrar grupos.
- D)HAVING
HAVING é a cláusula correta para filtrar resultados após o GROUP BY com base em agregações.
- E)WHERE
WHERE filtra registros antes do agrupamento, então não é a opção adequada para condições sobre agregados.
Gabarito: D
No SQL do Oracle, algumas palavras-chave trabalham em etapas diferentes da consulta. Primeiro você filtra linhas com WHERE, depois agrupa com GROUP BY e, se quiser aplicar um filtro sobre o resultado agregado, entra em cena o HAVING. É como separar a turma, fazer a média e só depois decidir quem passou no corte. O ponto central da questão é exatamente esse: o comando usado para filtrar resultados após o GROUP BY, com base em condições sobre funções de agregação, é o HAVING. Ele permite trabalhar com condições como COUNT, SUM, AVG, MAX e MIN, algo que o WHERE não faz nesse momento da consulta. Já o WHERE atua antes da agregação, filtrando registros individuais. Por isso, ele não serve para testar totalizações já calculadas. A lógica clássica do SQL é essa sequência: FROM, WHERE, GROUP BY, HAVING, ORDER BY. Então, o gabarito D está correto porque HAVING é a cláusula própria para restringir grupos já formados. Em doutrina e prática de SQL, essa é a distinção padrão cobrada em prova: WHERE filtra linhas; HAVING filtra grupos.