Heim  >  Artikel  >  Datenbank  >  Wie führe ich eine bedingte Aggregation in MySQL ohne „SUM IF' und „COUNT IF' durch?

Wie führe ich eine bedingte Aggregation in MySQL ohne „SUM IF' und „COUNT IF' durch?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-21 00:52:12243Durchsuche

How to Perform Conditional Aggregation in MySQL without 'SUM IF' and 'COUNT IF'?

MySQL: Alternative Methoden für die bedingte Aggregation mit „SUM IF“ und „COUNT IF“

Stellen Sie sich das folgende Szenario vor: Sie haben eine Tabelle mit den Spalten „Stunde“ und „Art“ und möchten Berechnungen basierend auf einer Bedingung durchführen. Beispielsweise möchten Sie möglicherweise die Anzahl der Zeilen zählen, in denen die Spalte „Art“ gleich 1 ist, oder die Spalte „Stunde“ nur für Zeilen summieren, in denen die Spalte „Art“ den Wert 2 hat.

In MySQL Die Syntax für die Verwendung von „SUM IF“ oder „COUNT IF“ wird nicht direkt unterstützt. Stattdessen können Sie die CASE-Anweisung verwenden, um eine bedingte Aggregation zu erreichen:

SELECT 
    count(id), 
    SUM(hour) as totHour, 
    SUM(case when kind = 1 then 1 else 0 end) as countKindOne
FROM table_name;

Diese Abfrage zählt die Gesamtzahl der Zeilen, summiert die Spalte „Stunde“ für alle Zeilen und zählt die Anzahl der Zeilen, in denen das „ Die Spalte „kind“ ist gleich 1.

Weitere Informationen zur bedingten Aggregation in MySQL finden Sie in den folgenden Ressourcen:

  • MySQL-Dokumentation: [CASE-Funktionen](https:// dev.mysql.com/doc/refman/8.0/en/case-statement.html)
  • Stack Overflow-Thema: [MySQL SUM IF Feld b = Feld a](https://stackoverflow.com/questions /2200315/mysql-sum-if-field-b-field-a)

Das obige ist der detaillierte Inhalt vonWie führe ich eine bedingte Aggregation in MySQL ohne „SUM IF' und „COUNT IF' durch?. 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