Maison > base de données > tutoriel mysql > Comment obtenir plusieurs décomptes à partir d'une seule requête SQL ?

Comment obtenir plusieurs décomptes à partir d'une seule requête SQL ?

Patricia Arquette
Libérer: 2025-01-20 16:28:10
original
697 Les gens l'ont consulté

How to Get Multiple Counts from a Single SQL Query?

Obtenir efficacement plusieurs décomptes avec une seule requête SQL

Les requêtes de base de données nécessitent souvent de récupérer plusieurs valeurs agrégées en fonction de différentes conditions. Bien que certaines approches puissent s'avérer inefficaces, une méthode concise utilise l'instruction CASE avec des fonctions d'agrégation, imitant efficacement les capacités d'une fonction PIVOT dans les bases de données dépourvues de cette fonctionnalité.

Voici comment procéder :

Disons que vous avez besoin de décomptes classés par différentes valeurs dans une colonne. Par exemple, considérons un tableau de suivi des distributeurs et de leurs niveaux (« exécutif » ou « personnel »). La requête suivante calcule efficacement divers décomptes :

<code class="language-sql">SELECT distributor_id,
       COUNT(*) AS total_count,
       SUM(CASE WHEN level = 'exec' THEN 1 ELSE 0 END) AS exec_count,
       SUM(CASE WHEN level = 'personal' THEN 1 ELSE 0 END) AS personal_count
FROM yourtable
GROUP BY distributor_id;</code>
Copier après la connexion

Cette requête effectue les opérations suivantes :

  • *`COUNT()**: Calculates the total number of rows for eachdistributor_id`.
  • SUM(CASE WHEN level = 'exec' THEN 1 ELSE 0 END) : compte les lignes où level est « exec ». L'instruction CASE attribue 1 si la condition est vraie, 0 sinon. SUM totalise ensuite ces 1 et ces 0.
  • SUM(CASE WHEN level = 'personal' THEN 1 ELSE 0 END) : De même, compte les lignes où level est « personnel ».
  • GROUP BY distributor_id : regroupe les résultats, en fournissant des décomptes séparés pour chaque distributeur.

Cette requête unique renvoie efficacement le nombre total et les comptes séparés pour les niveaux « exécutif » et « personnel » pour chaque distributor_id, le tout dans un seul ensemble de résultats. Cette approche est bien plus efficace que l'exécution de plusieurs requêtes distinctes.

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