Bedingte Aggregation mit SUM und COUNT in MySQL
Bei der Arbeit mit relationalen Datenbanken ist es oft notwendig, bedingte Aggregationen durchzuführen, um Daten basierend zusammenzufassen nach bestimmten Kriterien. MySQL bietet mehrere Möglichkeiten, dies zu erreichen, einschließlich der Verwendung der IF()- und CASE-Anweisungen.
Verwendung der IF()-Anweisung
In Ihrem Beispiel haben Sie es versucht um die IF()-Anweisung zu verwenden, um die Anzahl der Zeilen zu berechnen, bei denen art gleich 1 ist. MySQL erlaubt jedoch nicht die Verwendung der IF()-Anweisung in Aggregatfunktionen wie SUM und COUNT. Dies liegt daran, dass IF() einen Skalarwert zurückgibt, während Aggregatfunktionen einen Spaltenausdruck als Eingabe erfordern.
Verwenden der CASE-Anweisung
Um eine bedingte Aggregation durchzuführen, können Sie Verwenden Sie die CASE-Anweisung. Mit der CASE-Anweisung können Sie mehrere Bedingungen angeben und basierend auf diesen Bedingungen unterschiedliche Werte zurückgeben.
Die folgende Abfrage verwendet die CASE-Anweisung, um die Anzahl der Zeilen zu berechnen, in denen kind gleich 1 ist:
SELECT COUNT(id), SUM(hour) AS totHour, SUM(CASE WHEN kind = 1 THEN 1 ELSE 0 END) AS countKindOne FROM your_table;
In dieser Abfrage:
Das obige ist der detaillierte Inhalt vonWie führe ich eine bedingte Aggregation mit SUM und COUNT in MySQL durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!