A partir do código SQL (Structured Query Language) acima, ju...
SELECT d.nome, d.data_contratacao, c.nome, c.data_contratacao
FROM dentista d JOIN dentista c
ON (d.cro_chefe = c.cro)
WHERE d.data_contratacao < c.data_contratacao;
A partir do código SQL (Structured Query Language) acima, julgue o item subsecutivo.
A cláusula WHERE pode ser substituída pela cláusula HAVING, sem provocar alterações no resultado da consulta.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: E - errado
Para compreender a alternativa correta, é essencial entender a diferença entre as cláusulas WHERE e HAVING no SQL. A cláusula WHERE é utilizada para filtrar linhas antes da agregação de dados, enquanto a cláusula HAVING é usada após a agregação. O uso de HAVING é apropriado quando estamos trabalhando com funções de agregação como COUNT, MAX, MIN, SUM, e AVG e queremos aplicar um filtro aos resultados agregados, não às linhas individuais.
A consulta apresentada realiza um JOIN entre a tabela dentista e ela mesma para associar um dentista com o seu respectivo chefe, utilizando a chave de relação cro_chefe e cro. A condição na cláusula WHERE compara campos de datas de contratação de cada dentista, filtrando os registros onde a data de contratação do dentista é anterior à do seu chefe.
Substituir WHERE por HAVING nesta consulta seria inadequado porque não há funções de agregação que justifiquem o uso de HAVING. A mudança resultaria em um erro ou comportamento não intencional na execução da consulta. Portanto, a afirmação de que a cláusula WHERE pode ser substituída pela cláusula HAVING, sem provocar alterações no resultado, é incorreta.
Justificação: A alternativa correta é E - errado porque a cláusula HAVING não pode substituir a cláusula WHERE em uma consulta que não envolva funções de agregação.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
O comando HAVING só pode ser utilizado após a função GROUP BY e dentro da fubção GROUP BY o HAVING é equivalente ao WHERE.
Além das restrição dita pelo colega abaixo, tem essa definição:
O HAVING é diferente do WHERE. O WHERE restringe os resultados obtidos sempre após o uso da cláusula FROM, ao passo que a cláusula HAVING filtra o retorno do agrupamento.
fonte: meus resumos
Meus Resumos fulgo : https://www.devmedia.com.br/exemplos-com-group-by-e-com-a-clausula-having-totalizando-dados-sql-server-2008-parte-2/19839
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo