A partir do código SQL (Structured Query Language) acima, ju...

Próximas questões
Com base no mesmo assunto
Q824809 Banco de Dados

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.

Alternativas

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