Heim > Datenbank > MySQL-Tutorial > Wie kann man Vorkommen in gruppierten Daten mit PostgreSQL optimal zählen?

Wie kann man Vorkommen in gruppierten Daten mit PostgreSQL optimal zählen?

Mary-Kate Olsen
Freigeben: 2025-01-24 06:14:16
Original
573 Leute haben es durchsucht

How to Optimally Count Occurrences in Grouped Data Using PostgreSQL?

Zählen Sie effizient die Anzahl der Vorkommen in gruppierten PostgreSQL-Daten

PostgreSQL bietet eine Vielzahl von Methoden zum Zählen des Vorkommens von Daten in gruppierten Tabellen. Sie können beispielsweise die CASE WHEN-Anweisung verwenden, um bestimmte Werte zu zählen:

<code class="language-sql">SELECT
    sum(CASE WHEN question1 = 0 THEN 1 ELSE 0 END) AS ZERO,
    sum(CASE WHEN question1 = 1 THEN 1 ELSE 0 END) AS ONE,
    sum(CASE WHEN question1 = 2 THEN 1 ELSE 0 END) AS TWO,
    category
FROM reviews
    GROUP BY category</code>
Nach dem Login kopieren

Wenn jedoch die Anzahl der möglichen Werte zunimmt, wird die Verwendung der CASE WHEN-Anweisung immer umständlicher. In PostgreSQL 9.4 und höher bietet die Option „Aggregate FILTER“ eine sauberere und möglicherweise schnellere Lösung:

<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

Der Kürze halber kann eine vereinfachte Syntax 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 große Optionslisten bietet die Funktion crosstab() eine leistungsfähigere Alternative:

<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

Zusammenfassend stellt PostgreSQL mehrere Methoden für die bedingte SQL-Zählung bereit. Die Option FILTER bietet eine übersichtliche und effiziente Lösung, während die Funktion crosstab() die beste Leistung für die Handhabung einer großen Anzahl von Optionen bietet.

Das obige ist der detaillierte Inhalt vonWie kann man Vorkommen in gruppierten Daten mit PostgreSQL optimal 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