Maison >base de données >tutoriel mysql >Comment puis-je compter efficacement les occurrences conditionnelles dans PostgreSQL ?

Comment puis-je compter efficacement les occurrences conditionnelles dans PostgreSQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-24 06:21:10434parcourir

How Can I Efficiently Count Conditional Occurrences in PostgreSQL?

Comptage de conditions PostgreSQL : méthode d'optimisation

Lors du comptage des occurrences de données dans une table de base de données, les instructions conditionnelles peuvent sembler longues. Heureusement, PostgreSQL fournit une solution pratique et efficace.

Options d'agrégation de FILTRE

Pour PostgreSQL 9.4 et versions ultérieures, profitez de l'option d'agrégation FILTER pour une meilleure efficacité :

<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>

Syntaxe concise

Si la simplicité est votre priorité :

<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>

Requête croisée

Pour gérer de grandes listes d'options et rechercher des performances supérieures, pensez à utiliser la fonction crosstab() :

<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>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn