Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2025
- Código
- ce417344
- Banca
- CESPE / CEBRASPE
- Órgão
- FUB
- Ano
- 2025
- Cargo
- Tec ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: Errado. A cláusula HAVING não opera em um único conjunto de dados de entrada sem agregação; ela é usada justamente para filtrar os resultados de uma agregação, aplicando condições sobre os grupos formados pela cláusula GROUP BY. A afirmação inverte o papel da cláusula, que é essencialmente dependente de agregação.
A cláusula HAVING é um dos recursos mais cobrados em SQL, e a confusão com a cláusula WHERE é clássica. Ambas servem para filtrar dados, mas em momentos diferentes do processamento da consulta. A WHERE atua sobre as linhas individuais da tabela, antes de qualquer agrupamento ou agregação. Já a HAVING atua sobre os grupos já formados, ou seja, depois que a agregação foi calculada. É por isso que a HAVING pode referenciar funções de agregação como COUNT, SUM, AVG, MAX e MIN, enquanto a WHERE não pode.
Para entender na prática, imagine uma tabela de vendas com colunas produto e valor. Se você quiser listar apenas os produtos cuja soma de vendas seja maior que R$ 1.000,00, a consulta seria:
SELECT produto, SUM(valor) AS total
FROM vendas
GROUP BY produto
HAVING SUM(valor) > 1000;Aqui, o GROUP BY agrupa as vendas por produto, o SUM(valor) calcula o total de cada grupo, e o HAVING filtra os grupos que não atingem o total mínimo. Sem a agregação, a HAVING não teria o que filtrar. A afirmação do enunciado, portanto, está incorreta ao dizer que a HAVING opera "sem agregação".
A distinção entre WHERE e HAVING é o ponto central que a banca explora. Enquanto a WHERE filtra linhas antes do agrupamento, a HAVING filtra grupos depois da agregação. Essa diferença de momento é o que define qual cláusula usar em cada situação. A pegadinha aqui é justamente inverter essa lógica, afirmando que a HAVING não tem relação com agregação, quando na verdade ela é a ferramenta específica para filtrar resultados agregados.
A banca inverte o papel da cláusula HAVING, afirmando que ela opera sem agregação. O candidato que confunde HAVING com WHERE cai na armadilha. Lembre-se: WHERE filtra linhas, HAVING filtra grupos. A HAVING só faz sentido quando há agregação, pois é ela que permite filtrar os resultados das funções agregadas.
✅ ERRADO. A cláusula HAVING é usada para filtrar grupos após a agregação, e não opera em um único conjunto de dados sem agregação.
Gabarito: Errado.
Link permanente: /questoes/ce417344