MySQL: Bedingte Aggregation mit „SUM IF“ und „COUNT IF“
Aggregationsfunktionen wie SUM und COUNT sind für die Zusammenfassung von Daten unerlässlich MySQL. Was aber, wenn Sie Bedingungen auf Ihre Aggregation anwenden müssen? Hier kommt die bedingte Aggregation ins Spiel.
Stellen Sie sich ein Szenario vor, in dem Sie eine Tabelle mit zwei Spalten haben: „Stunde“ und „Art“. Sie möchten „Stunden“-Werte basierend darauf zählen und summieren, ob der entsprechende „Art“-Wert 1 ist. Herkömmliche Aggregationsfunktionen allein können dies nicht bewältigen.
Um dieses Problem zu lösen, bietet MySQL die CASE-Anweisung an, die Ihnen dies ermöglicht um benutzerdefinierte Bedingungen für die Aggregation zu definieren. Hier ist eine überarbeitete Abfrage mit einer CASE-Anweisung:
SELECT count(id), SUM(hour) as totHour, SUM(case when kind = 1 then 1 else 0 end) as countKindOne
In dieser Abfrage prüft die CASE-Anweisung, ob der „kind“-Wert gleich 1 ist. Wenn „true“, gibt sie 1 zurück; Andernfalls wird 0 zurückgegeben. Das Ergebnis wird dann mit der Funktion SUM() summiert, um die Vorkommen von „kind“ gleich 1 zu zählen.
Durch die Verwendung der bedingten Aggregation mit einer CASE-Anweisung können Sie effektiv filtern und aggregieren Ihre Daten anhand bestimmter Kriterien. Diese leistungsstarke Technik eröffnet eine Vielzahl von Möglichkeiten zur Datenanalyse und -bearbeitung in MySQL.
Das obige ist der detaillierte Inhalt vonWie kann ich die bedingte Aggregation in MySQL verwenden, um Werte basierend auf bestimmten Kriterien zu zählen und zu summieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!