Cómo recuperar '0' de la función SUMA de MySQL cuando no existen valores
La función SUMA en MySQL ofrece una manera conveniente de agregar números valores. Sin embargo, cuando no se encuentran filas coincidentes durante la consulta, la función SUMA normalmente devuelve un valor NULL. Para algunos casos de uso, puede ser más conveniente devolver '0' en lugar de NULL.
Utilizando COALESCE para resolver el problema
La solución a este problema radica en la función FUSIONAR. COALESCE le permite especificar un valor predeterminado que se devolverá cuando el primer argumento se evalúe como NULL.
Considere el siguiente ejemplo:
SELECT COALESCE(SUM(Column_1),0) FROM Table WHERE Column_2 = 'Test'
En esta consulta, COALESCE envuelve la función SUMA. Si la SUMA de Column_1 para las filas donde Column_2 es igual a 'Prueba' devuelve un valor NULL, COALESCE proporcionará '0'.
Demostración y más información
Visite http ://www.sqlfiddle.com/#!2/d1542/3/0 para ver una demostración en vivo de la solución.
Para profundizar en los matices de COALESCE, considere el siguiente escenario que involucra tres tablas con diferentes distribuciones de valores:
Aplicando la siguiente 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
Obtendrás los siguientes resultados:
TABLE_NAME | DESCRIPCIÓN | EXPECTED_SUM | ACTUAL_SUM |
---|---|---|---|
foo | mixto nulo/no nulo | 21 | 21 |
barra | todo no nulo | 21 | 21 |
baz | all null | 0 | 0 |
Como puede observar, la función COALESCE devuelve eficientemente '0' para el ' tabla baz', donde todos los valores son NULL.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3