So rufen Sie „0“ aus der SUM-Funktion von MySQL ab, wenn keine Werte vorhanden sind
Die SUM-Funktion in MySQL bietet eine praktische Möglichkeit, numerische Werte zu aggregieren Werte. Wenn jedoch während der Abfrage keine übereinstimmenden Zeilen gefunden werden, gibt die SUM-Funktion normalerweise einen NULL-Wert zurück. Für einige Anwendungsfälle kann es wünschenswerter sein, „0“ anstelle von NULL zurückzugeben.
Verwendung von COALESCE zur Lösung des Problems
Die Lösung für dieses Problem liegt in die COALESCE-Funktion. Mit COALESCE können Sie einen Standardwert angeben, der zurückgegeben werden soll, wenn das erste Argument NULL ergibt.
Betrachten Sie das folgende Beispiel:
SELECT COALESCE(SUM(Column_1),0) FROM Table WHERE Column_2 = 'Test'
In dieser Abfrage umschließt COALESCE die SUM-Funktion. Wenn die SUMME von Spalte_1 für Zeilen, in denen Spalte_2 gleich „Test“ ist, einen NULL-Wert zurückgibt, liefert COALESCE stattdessen „0“.
Demonstration und weitere Informationen
Besuchen Sie http ://www.sqlfiddle.com/#!2/d1542/3/0 für eine Live-Demonstration der Lösung.
Um tiefer in die Nuancen von COALESCE einzutauchen, betrachten Sie das folgende Szenario mit drei Tabellen mit unterschiedlichen Werteverteilungen:
Durch Anwenden der folgenden Abfrage:
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
Sie erhalten die folgenden Ergebnisse:
TABLE_NAME | DESCRIPTION | EXPECTED_SUM | ACTUAL_SUM |
---|---|---|---|
foo | gemischt null/nicht null | 21 | 21 |
bar | alle ungleich Null | 21 | 21 |
baz | all null | 0 | 0 |
Wie Sie sehen können, gibt die COALESCE-Funktion effizient „0“ für „ baz'-Tabelle, in der alle Werte NULL sind.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3