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