Heim > Datenbank > MySQL-Tutorial > Wie kann ich bedingte Vorkommen in SQL-Abfragen effizient zählen?

Wie kann ich bedingte Vorkommen in SQL-Abfragen effizient zählen?

Linda Hamilton
Freigeben: 2025-01-24 06:32:13
Original
982 Leute haben es durchsucht

How Can I Efficiently Count Conditional Occurrences in SQL Queries?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage