Maison >base de données >tutoriel mysql >Comment compter les valeurs conditionnelles dans une colonne SQL ?

Comment compter les valeurs conditionnelles dans une colonne SQL ?

DDD
DDDoriginal
2025-01-09 22:52:471083parcourir

How to Count Conditional Values in a SQL Column?

Valeurs des conditions statistiques dans les colonnes SQL

Supposons que vous ayez une colonne appelée "Priorité" qui contient des valeurs entières comprises entre 1 et 5. Vous souhaitez générer un graphique montrant le nombre de chaque valeur de priorité. Par exemple, « Priorité1 » doit compter le nombre de lignes avec une valeur « Priorité » de 1, « Priorité2 » doit compter le nombre de lignes avec une valeur « Priorité » de 2, et ainsi de suite.

Solution :

Pour ce faire, vous pouvez utiliser une requête SQL avec une fonction d'agrégation conditionnelle :

<code class="language-sql">SELECT 
    jobID, JobName,
    SUM(CASE WHEN Priority = 1 THEN 1 ELSE 0 END) AS priority1,
    SUM(CASE WHEN Priority = 2 THEN 1 ELSE 0 END) AS priority2,
    SUM(CASE WHEN Priority = 3 THEN 1 ELSE 0 END) AS priority3,
    SUM(CASE WHEN Priority = 4 THEN 1 ELSE 0 END) AS priority4,
    SUM(CASE WHEN Priority = 5 THEN 1 ELSE 0 END) AS priority5
FROM
    Jobs
GROUP BY 
    jobID, JobName;</code>

Cette requête utilise l'agrégation conditionnelle pour compter le nombre de lignes pour chaque valeur de priorité. L'expression CASE vérifie la valeur de Priorité et renvoie 1 si elle correspond à la valeur de priorité requise, sinon elle renvoie 0. La fonction SUM accumule ensuite ces valeurs pour produire le décompte final.

Si vous n'avez pas besoin des colonnes jobID et JobName dans les résultats, vous pouvez les supprimer de la clause SELECT et supprimer la clause GROUP BY :

<code class="language-sql">SELECT
    SUM(CASE WHEN Priority = 1 THEN 1 ELSE 0 END) AS priority1,
    SUM(CASE WHEN Priority = 2 THEN 1 ELSE 0 END) AS priority2,
    SUM(CASE WHEN Priority = 3 THEN 1 ELSE 0 END) AS priority3,
    SUM(CASE WHEN Priority = 4 THEN 1 ELSE 0 END) AS priority4,
    SUM(CASE WHEN Priority = 5 THEN 1 ELSE 0 END) AS priority5
FROM
    Jobs;</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