Dicas T-SQL – Warning: Null value is eliminated by an aggregate or other SET operation

Fala pessoal,

Nesse post vamos entender quando podemos encontrar a mensagem abaixo e se isso é realmente um problema ou não! #gogogo

“Warning: Null value is eliminated by an aggregate or other SET operation”


Warning: Null value is eliminated by an aggregate or other SET operation:

Vamos simular um cenário criando uma tabela e inserindo alguns registros.

Agora vamos fazer a soma dos valores da coluna “Salario”.

Até aqui tudo normal. Vamos então inserir mais uma linha, mas repare que dessa vez vamos informar o valor do Salario como NULL.

Agora vamos fazer novamente a soma na coluna “Salario”.

Repare que o valor da soma é o mesmo do SELECT anterior.

Contudo, ao validar a aba “Messages” temos a mensagem abaixo e mesmo assim a query ainda foi executada com sucesso!

“Warning: Null value is eliminated by an aggregate or other SET operation.”

“Uai Luiz, mas afinal, isso é um ERRO ou não???”

Isso NÃO É UM ERRO!!! Como o próprio nome já diz: WARNING = AVISO e AVISO <> ERRO

O SQL Server está apenas te INFORMANDO que ele eliminou alguns valores NULL na soma (que é uma função de agregação). No nosso caso, ele eliminou o valor NULL da linha 4.

Lembro que no início da minha carreira eu enxergava essa mensagem, mas não entendia o que queria dizer e simplesmente ignorava. O tempo foi passando e um certo dia parei pra entender mais a fundo e depois nunca mais esqueci. Então resolvi compartilhar com vocês também, pois pode ser uma dúvida comum pra quem está começando. xD


CUIDADO: COUNT x NULL

Um outro caso que sempre me deixou intrigado é o seguinte:

Repare que ao utilizar o “COUNT(*)” ele retorna o valor 4, pois ele entende que você quer saber a quantidade total de linhas na sua tabela, independente de possuir o valor NULL ou não.

Mas quando utilizamos o “COUNT(Salario)” em uma coluna específica, nesse caso o SQL Server irá ignorar os valores NULL e por esse motivo ele retorna o valor 3.

“Warning: Null value is eliminated by an aggregate or other SET operation.”


Espero que tenha gostado e que isso também possa ser útil no seu dia a dia. Até o próximo post!

Me siga no LinkedIn e YouTube para ficar por dentro das novidades.

Abraço,

Luiz Vitor França Lima

Consultor SQL Server

Deixe uma resposta