Effizientes Zählen bedingter Vorkommen in SQL
In diesem Leitfaden werden verschiedene Methoden zum Zählen bedingter Datenvorkommen in SQL-Abfragen untersucht, gruppiert nach einer bestimmten Spalte. Der optimale Ansatz hängt von Ihrem Datenbanksystem ab.
PostgreSQL 9.4 und höher: FILTER
Klausel
PostgreSQL 9.4 und nachfolgende Versionen bieten die effizienteste und lesbarste Lösung unter Verwendung der FILTER
-Klausel innerhalb der COUNT
-Aggregatfunktion:
<code class="language-sql">SELECT category, COUNT(*) FILTER (WHERE question1 = 0) AS zero, COUNT(*) FILTER (WHERE question1 = 1) AS one, COUNT(*) FILTER (WHERE question1 = 2) AS two FROM reviews GROUP BY category;</code>
Kurze Alternative für PostgreSQL
Eine kürzere Syntax erzielt das gleiche Ergebnis:
<code class="language-sql">SELECT category, COUNT(CASE WHEN question1 = 0 THEN 1 END) AS zero, COUNT(CASE WHEN question1 = 1 THEN 1 END) AS one, COUNT(CASE WHEN question1 = 2 THEN 1 END) AS two FROM reviews GROUP BY category;</code>
Optimale Kreuztabelle für umfangreiche Daten
Für umfassende Kreuztabellenabfragen, insbesondere mit zahlreichen Kategorien, bietet die crosstab()
-Funktion eine überlegene Leistung:
<code class="language-sql"> SELECT * FROM crosstab( 'SELECT category, question1, COUNT(*) AS ct FROM reviews GROUP BY 1, 2 ORDER BY 1, 2', 'VALUES (0), (1), (2)' ) AS ct (category TEXT, zero INT, one INT, two INT); ``` This approach dynamically handles a larger number of categories more efficiently than the previous methods.</code>
Das obige ist der detaillierte Inhalt vonWie kann ich bedingte Vorkommen in SQL-Abfragen effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!