Heim >Datenbank >MySQL-Tutorial >Wie erhalte ich mehrere Zählungen aus einer einzelnen SQL-Abfrage?
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:
**: Calculates the total number of rows for each
distributor_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!