Como recuperar '0' da função SUM do MySQL quando não existem valores
A função SUM no MySQL oferece uma maneira conveniente de agregar números valores. No entanto, quando nenhuma linha correspondente é encontrada durante a consulta, a função SUM normalmente retorna um valor NULL. Para alguns casos de uso, pode ser mais desejável retornar '0' em vez de NULL.
Utilizando COALESCE para resolver o problema
A solução para este problema está em a função COALESCE. COALESCE permite que você especifique um valor padrão a ser retornado quando o primeiro argumento for avaliado como NULL.
Considere o seguinte exemplo:
SELECT COALESCE(SUM(Column_1),0) FROM Table WHERE Column_2 = 'Test'
Nesta consulta, COALESCE envolve a função SUM. Se a SOMA da Coluna_1 para linhas onde Coluna_2 for igual a 'Teste' retornar um valor NULO, COALESCE fornecerá '0'.
Demonstração e mais informações
Visite http ://www.sqlfiddle.com/#!2/d1542/3/0 para uma demonstração ao vivo da solução.
Para se aprofundar nas nuances do COALESCE, considere o seguinte cenário envolvendo três tabelas com diferentes distribuições de valores:
Aplicando a seguinte consulta:
SELECT 'foo' as table_name, 'mixed null/non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM foo UNION ALL SELECT 'bar' as table_name, 'all non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM bar UNION ALL SELECT 'baz' as table_name, 'all null' as description, 0 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM baz
Você obterá os seguintes resultados:
TABLE_NAME | DESCRIPTION | EXPECTED_SUM | ACTUAL_SUM |
---|---|---|---|
foo | misto nulo/não nulo | 21 | 21 |
bar | todos não nulos | 21 | 21 |
baz | all null | 0 | 0 |
Como você pode observar, a função COALESCE retorna eficientemente '0' para o ' tabela baz', onde todos os valores são NULL.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3