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
Libérer: 2025-01-24 06:21:10
original
396 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal