Maison  >  Article  >  base de données  >  Comment obtenir les fonctionnalités « SUM IF » et « COUNT IF » dans MySQL avec l'agrégation conditionnelle ?

Comment obtenir les fonctionnalités « SUM IF » et « COUNT IF » dans MySQL avec l'agrégation conditionnelle ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-13 14:32:02370parcourir

How to Achieve 'SUM IF' and 'COUNT IF' Functionality in MySQL with Conditional Aggregation?

Agrégation conditionnelle MySQL : débloquer les capacités « SUM IF » et « COUNT IF »

Dans MySQL, effectuer une agrégation conditionnelle, telle que la sommation ou le comptage des valeurs en fonction de conditions spécifiques peut être obtenu grâce à l'utilisation d'instructions CASE. Cela vous permet d'appliquer de manière flexible des critères à vos opérations d'agrégation.

Considérez le scénario suivant : vous disposez d'un tableau avec des colonnes « heure » et « type » (qui peuvent contenir les valeurs 1, 2 ou 3). Vous souhaitez compter le nombre de lignes, calculer le nombre total d'heures et déterminer le nombre de lignes où « genre » est égal à 1.

Au départ, vous pouvez essayer les requêtes suivantes :

SELECT count(id), SUM(hour) as totHour, SUM( IF ( kind = 1, 1, 0 ) ) as countKindOne

ou

SELECT count(id), SUM(hour) as totHour, COUNT( IF ( kind = 1 ) ) as countKindOne

Cependant, ces requêtes entraîneront probablement une erreur. Pour résoudre ce problème, vous devez utiliser une instruction CASE dans les opérations d'agrégation :

SELECT count(id), 
    SUM(hour) as totHour, 
    SUM(case when kind = 1 then 1 else 0 end) as countKindOne

Dans cette instruction CASE, nous spécifions que si la valeur dans la colonne 'kind' est 1, nous renvoyons 1, sinon nous renvoyons 0. Cela nous permet de compter conditionnellement les lignes où « genre » est égal à 1.

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