Heim > Datenbank > MySQL-Tutorial > Wie kann ich Datenvorkommen in SQL mit mehreren Bedingungen effizient zählen?

Wie kann ich Datenvorkommen in SQL mit mehreren Bedingungen effizient zählen?

Susan Sarandon
Freigeben: 2025-01-24 06:27:11
Original
744 Leute haben es durchsucht

How Can I Efficiently Count Data Occurrences in SQL with Multiple Conditions?

Effiziente SQL-Bedingungszählmethode

In SQL gibt es viele Möglichkeiten, das Vorkommen von Daten nach einer bestimmten Spalte zu gruppieren und zu zählen. In PostgreSQL ist die Verwendung eines CASE-Ausdrucks die einfachste Möglichkeit, wie in der Beispielabfrage gezeigt. Dieser Ansatz kann jedoch umständlich werden, wenn es um eine große Anzahl möglicher Werte geht.

PostgreSQL 9.4 und höher bietet eine optimiertere und flexiblere Methode: die FILTERAggregationsoption. Mit der FILTER-Klausel können Sie zusätzliche Bedingungen auf eine Aggregatfunktion anwenden und nur bestimmte Werte zählen, die einer bestimmten Bedingung entsprechen.

<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 1;</code>
Nach dem Login kopieren

Diese Abfrage zählt effektiv die Vorkommen von null, eins und zwei in der Spalte „Frage1“, gruppiert nach der Kategoriespalte.

Zur weiteren Optimierung kann folgende Kurzfassung verwendet werden:

<code class="language-sql">SELECT category
     , count(question1 = 0 OR NULL) AS zero
     , count(question1 = 1 OR NULL) AS one
     , count(question1 = 2 OR NULL) AS two
FROM   reviews
GROUP  BY 1;</code>
Nach dem Login kopieren

Für komplexe Szenarien mit mehreren Bedingungen oder einer großen Anzahl von Optionen bietet die Funktion crosstab() hervorragende Leistung und Einfachheit:

<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);</code>
Nach dem Login kopieren

Diese crosstab-Abfrage erzeugt einen Ergebnissatz mit allen erforderlichen Zählungen, der für einen einfachen Zugriff und eine einfache Analyse als benannte Spalten dargestellt wird.

Das obige ist der detaillierte Inhalt vonWie kann ich Datenvorkommen in SQL mit mehreren Bedingungen 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