Heim >Datenbank >MySQL-Tutorial >Wie erhalte ich mehrere Zählungen aus einer einzelnen SQL-Abfrage?

Wie erhalte ich mehrere Zählungen aus einer einzelnen SQL-Abfrage?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-20 16:28:10742Durchsuche

How to Get Multiple Counts from a Single SQL Query?

Effizientes Abrufen mehrerer Zählungen mit einer SQL-Abfrage

Datenbankabfragen erfordern häufig das Abrufen mehrerer Aggregatwerte basierend auf unterschiedlichen Bedingungen. Während einige Ansätze möglicherweise ineffizient sind, verwendet eine prägnante Methode die CASE-Anweisung mit Aggregatfunktionen und ahmt so effektiv die Fähigkeiten einer PIVOT-Funktion in Datenbanken nach, denen diese Funktion fehlt.

So geht's:

Angenommen, Sie benötigen Zählungen, die nach verschiedenen Werten in einer Spalte kategorisiert sind. Betrachten Sie beispielsweise eine Tabelle, in der Vertriebshändler und ihre Ebenen („Exec“ oder „Personal“) erfasst werden. Die folgende Abfrage berechnet effizient verschiedene Zählwerte:

<code class="language-sql">SELECT distributor_id,
       COUNT(*) AS total_count,
       SUM(CASE WHEN level = 'exec' THEN 1 ELSE 0 END) AS exec_count,
       SUM(CASE WHEN level = 'personal' THEN 1 ELSE 0 END) AS personal_count
FROM yourtable
GROUP BY distributor_id;</code>

Diese Abfrage führt Folgendes aus:

  • *`COUNT()**: Calculates the total number of rows for eachdistributor_id`.
  • SUM(CASE WHEN level = 'exec' THEN 1 ELSE 0 END): Zählt Zeilen, in denen level „exec“ ist. Die CASE-Anweisung weist 1 zu, wenn die Bedingung wahr ist, andernfalls 0. SUM dann die Summe dieser Einsen und Nullen.
  • SUM(CASE WHEN level = 'personal' THEN 1 ELSE 0 END): Zählt auf ähnliche Weise Zeilen, in denen level „persönlich“ ist.
  • GROUP BY distributor_id: Gruppiert die Ergebnisse und stellt für jeden Verteiler separate Zählungen bereit.

Diese einzelne Abfrage gibt effizient die Gesamtzahl und separate Zählungen für die Ebenen „exec“ und „persönlich“ für jedes distributor_id zurück, alles in einem einzigen Ergebnissatz. Dieser Ansatz ist weitaus effizienter als das Ausführen mehrerer separater Abfragen.

Das obige ist der detaillierte Inhalt vonWie erhalte ich mehrere Zählungen aus einer einzelnen SQL-Abfrage?. 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