Bedingte Aggregation in MySQL: Freischalten der Funktionen „SUM IF“ und „COUNT IF“
Durchführen bedingter Aggregation in MySQL, z. B. Summieren oder Das Zählen von Werten basierend auf bestimmten Bedingungen kann durch die Verwendung von CASE-Anweisungen erreicht werden. Dadurch können Sie Kriterien flexibel auf Ihre Aggregationsvorgänge anwenden.
Stellen Sie sich das folgende Szenario vor: Sie haben eine Tabelle mit den Spalten „Stunde“ und „Art“ (die die Werte 1, 2 oder 3 enthalten kann). Sie möchten die Anzahl der Zeilen zählen, die Gesamtstunden berechnen und die Anzahl der Zeilen bestimmen, bei denen „art“ gleich 1 ist.
Zunächst könnten Sie die folgenden Abfragen ausprobieren:
SELECT count(id), SUM(hour) as totHour, SUM( IF ( kind = 1, 1, 0 ) ) as countKindOne
oder
SELECT count(id), SUM(hour) as totHour, COUNT( IF ( kind = 1 ) ) as countKindOne
Diese Abfragen führen jedoch wahrscheinlich zu einem Fehler. Um dieses Problem zu lösen, müssen Sie eine CASE-Anweisung innerhalb der Aggregationsoperationen verwenden:
SELECT count(id), SUM(hour) as totHour, SUM(case when kind = 1 then 1 else 0 end) as countKindOne
In dieser CASE-Anweisung geben wir an, dass wir 1 zurückgeben, wenn der Wert in der Spalte „Art“ 1 ist, andernfalls wir geben 0 zurück. Dadurch können wir bedingt die Zeilen zählen, in denen „art“ gleich 1 ist.
Das obige ist der detaillierte Inhalt vonWie erreicht man die Funktionalität „SUM IF' und „COUNT IF' in MySQL mit bedingter Aggregation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!