← Questões de Banco de Dados

Banco de Dados · FGV · 2025

Questão comentada de Banco de Dados

Filtrar dados no SQL é essencial para extrair informações relevantes, reduzir o volume de resultados e melhorar o desempenho das consultas. Acerca desse cenário, avalie as afirmativas a seguir e assinale (V) para a verdadeiras e (F) para a falsa. ( ) A cláusula WHERE pode filtrar as linhas antes da agregação (ou seja, antes do GROUP BY). ( ) A cláusula HAVING filtra os grupos depois da agregação. ( ) Não é possível usar funções agregadas como SUM() e AVG() na cláusula WHERE, mas é permitido na cláusula HAVING. As afirmativas são, respectivamente,

Gabarito: E

Em SQL, a lógica é bem intuitiva: primeiro você filtra as linhas, depois você pode agrupar e, só então, filtrar os grupos. A cláusula WHERE atua sobre as linhas individuais antes da etapa de agregação e antes do GROUP BY. Já a cláusula HAVING entra depois, quando os grupos já foram formados, servindo para limitar resultados agregados. Por isso, a primeira afirmativa é verdadeira: WHERE pode sim filtrar antes da agregação. A segunda também é verdadeira, porque HAVING foi justamente criada para trabalhar com grupos, como em consultas com COUNT(), SUM() e AVG(). A terceira afirmativa também está correta: funções agregadas como SUM() e AVG() normalmente não podem aparecer no WHERE, porque nesse momento ainda não existe o grupo calculado. Mas elas podem ser usadas no HAVING, pois ali a agregação já aconteceu. Em termos práticos, o WHERE cuida do filtro dos registros, e o HAVING cuida do filtro do resultado agrupado. Então, o gabarito é E, com a sequência V - V - V. Essa é a regra clássica de SQL e costuma aparecer bastante em prova, sem muita firula: WHERE filtra linhas, HAVING filtra grupos.

Continue treinando

Questões relacionadas