Considere o seguinte comando SQL: SELECT D.NM_DEPARTAMENTO,...
Considere o seguinte comando SQL:
SELECT D.NM_DEPARTAMENTO, SUM(P.SALARIO)
FROM TB_DEPARTAMENTO D INNER JOIN TB_PROFESSOR P
ON (D.COD_DEPARTAMENTO = P.COD_DEPARTAMENTO)
É CORRETO afirmar:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a C, que afirma que a sintaxe do comando está incorreta, pois deveria apresentar a cláusula GROUP BY.
Vamos entender o porquê: quando você usa funções de agregação como SUM(), você está combinando várias linhas de resultados em um único valor de soma. Para que o SQL saiba como agrupar esses valores para a soma, é necessário especificar os critérios de agrupamento com a cláusula GROUP BY. Sem essa cláusula, o SQL não tem uma diretiva de como agrupar as linhas, o que é necessário quando queremos realizar uma operação de agregação por grupo, como somar os salários por departamento.
O correto seria ter um comando como:
SELECT D.NM_DEPARTAMENTO, SUM(P.SALARIO) FROM TB_DEPARTAMENTO D INNER JOIN TB_PROFESSOR P ON (D.COD_DEPARTAMENTO = P.COD_DEPARTAMENTO) GROUP BY D.NM_DEPARTAMENTO;
Este comando agora agrupa os resultados pelo nome dos departamentos e, então, calcula a soma dos salários para cada um desses grupos.
As outras alternativas estão incorretas por essas razões:
- A: A consulta não necessariamente retorna o mesmo número de linhas da tabela TB_PROFESSOR, pois a função de agregação SUM pode combinar várias linhas em uma única linha para cada departamento.
- B: Em SQL, a função SUM ignora valores NULL. Isso significa que, se houver um valor NULL para SALARIO, ele não será considerado na soma, mas o resultado da consulta não será NULL por causa disso.
- D: A junção INNER JOIN pode ser utilizada com funções de agregação como SUM sem problemas. A questão é que, ao fazer isso, você precisa especificar os critérios de agrupamento com GROUP BY.
Entender essas nuances do SQL é crucial para escrever consultas corretas e eficazes, e é um conhecimento fundamental para qualquer pessoa que trabalhe com banco de dados.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo