Comment récupérer '0' de la fonction SUM de MySQL lorsqu'aucune valeur n'existe
La fonction SUM de MySQL offre un moyen pratique d'agréger des valeurs numériques valeurs. Cependant, lorsqu'aucune ligne correspondante n'est trouvée lors de la requête, la fonction SUM renvoie généralement une valeur NULL. Pour certains cas d'utilisation, il peut être plus souhaitable de renvoyer « 0 » au lieu de NULL.
Utiliser COALESCE pour résoudre le problème
La solution à ce problème réside dans la fonction COALESCE. COALESCE vous permet de spécifier une valeur par défaut à renvoyer lorsque le premier argument est évalué à NULL.
Considérez l'exemple suivant :
SELECT COALESCE(SUM(Column_1),0) FROM Table WHERE Column_2 = 'Test'
Dans cette requête, COALESCE entoure la fonction SUM. Si la SOMME de Column_1 pour les lignes où Column_2 est égal à « Test » renvoie une valeur NULL, COALESCE fournira à la place « 0 ».
Démonstration et plus d'informations
Visitez http ://www.sqlfiddle.com/#!2/d1542/3/0 pour une démonstration en direct de la solution.
Pour approfondir les nuances de COALESCE, envisagez le scénario suivant impliquant trois tables avec des valeurs différentes. distributions de valeurs :
En appliquant la requête suivante :
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
Vous obtiendrez les résultats suivants :
TABLE_NAME | DESCRIPTION | EXPECTED_SUM | ACTUAL_SUM |
---|---|---|---|
foo | mixte nul/non nul | 21 | 21 |
bar | tous non nuls | 21 | 21 |
baz | all null | 0 | 0 |
Comme vous pouvez le constater, la fonction COALESCE renvoie efficacement '0' pour le ' baz', où toutes les valeurs sont NULL.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3