Heim  >  Artikel  >  Datenbank  >  Wie erreicht man die Funktionalität „SUM IF' und „COUNT IF' in MySQL mit bedingter Aggregation?

Wie erreicht man die Funktionalität „SUM IF' und „COUNT IF' in MySQL mit bedingter Aggregation?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-13 14:32:02369Durchsuche

How to Achieve 'SUM IF' and 'COUNT IF' Functionality in MySQL with Conditional Aggregation?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn