Comptage conditionnel en SQL : fonction Conditional Count()
La fonction Count() en SQL est généralement utilisée pour compter le nombre de lignes dans un tableau. Toutefois, dans certains cas, vous devrez peut-être compter uniquement des lignes spécifiques en fonction de conditions. Cet article explique s'il est possible de spécifier des conditions dans l'instruction Count().
Question
Un utilisateur est tombé sur un scénario dans lequel il devait compter les lignes uniquement si une condition spécifique était remplie dans une colonne. Plus précisément, ils souhaitent compter uniquement les lignes avec la valeur « Manager » dans la colonne « Position ». La seule exigence est d'effectuer ce comptage conditionnel dans l'instruction Count() elle-même, sans utiliser de clause WHERE. En effet, ils doivent compter à la fois les lignes « Manager » et « Autre » dans la même requête.
Solution
Pour implémenter ce comptage conditionnel sans utiliser WHERE, vous pouvez utiliser le fait que la fonction d'agrégation Count() ne compte que les valeurs non nulles. Ce qui suit est une solution utilisant des expressions CASE :
<code class="language-sql">select count(case Position when 'Manager' then 1 else null end) from ...</code>
Dans cette instruction, l'expression CASE vérifie si la colonne "Position" est égale à "Manager". Renvoie 1 si vrai, null sinon. La fonction Count() évalue ensuite la valeur non nulle renvoyée par l'expression CASE, en comptant uniquement la ligne « Manager ».
Alternatives
Une autre approche consiste à utiliser la fonction d'agrégation sum() de la même manière :
<code class="language-sql">select sum(case Position when 'Manager' then 1 else 0 end) from ...</code>
Dans ce cas, l'expression CASE renvoie 1 pour la ligne "Manager" et 0 pour les autres lignes. La fonction sum() calcule ensuite la somme de ces valeurs, ce qui donne un nombre de lignes « Manager ».
Conclusion
Les conditions peuvent être spécifiées dans l'instruction Count() en utilisant une expression CASE ou la fonction d'agrégation sum(). Cela permet de compter efficacement les lignes en fonction de conditions spécifiques, même dans les situations où une clause WHERE peut ne pas être appropriée.
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!