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

Comment puis-je compter efficacement les occurrences conditionnelles dans les requêtes SQL ?

Linda Hamilton
Libérer: 2025-01-24 06:32:13
original
982 Les gens l'ont consulté

How Can I Efficiently Count Conditional Occurrences in SQL Queries?

Compter efficacement les occurrences conditionnelles en SQL

Ce guide explore différentes méthodes pour compter les occurrences de données conditionnelles dans les requêtes SQL, regroupées par une colonne spécifique. L'approche optimale dépend de votre système de base de données.

PostgreSQL 9.4 et versions ultérieures : FILTER Clause

PostgreSQL 9.4 et versions ultérieures offrent la solution la plus efficace et la plus lisible en utilisant la clause FILTER dans la fonction d'agrégation COUNT :

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

Alternative concise pour PostgreSQL

Une syntaxe plus courte permet d'obtenir le même résultat :

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

Tableau croisé optimal pour des données étendues

Pour les requêtes croisées complètes, notamment avec de nombreuses catégories, la fonction crosstab() offre des performances supérieures :

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