Agrégation conditionnelle avec SUM et COUNT dans MySQL
Lorsque vous travaillez avec des bases de données relationnelles, il est souvent nécessaire d'effectuer des agrégations conditionnelles pour résumer les données en fonction sur des critères précis. MySQL propose plusieurs façons d'y parvenir, y compris l'utilisation des instructions IF() et CASE.
Utilisation de l'instruction IF()
Dans votre exemple, vous avez tenté pour utiliser l'instruction IF() pour calculer le nombre de lignes où kind est égal à 1. Cependant, MySQL n'autorise pas l'utilisation de l'instruction IF() dans les fonctions d'agrégation comme SUM et COUNT. En effet, IF() renvoie une valeur scalaire, tandis que les fonctions d'agrégation nécessitent une expression de colonne en entrée.
À l'aide de l'instruction CASE
Pour effectuer une agrégation conditionnelle, vous pouvez utilisez l'instruction CASE. L'instruction CASE vous permet de spécifier plusieurs conditions et de renvoyer différentes valeurs en fonction de ces conditions.
La requête suivante utilise l'instruction CASE pour calculer le nombre de lignes où kind est égal à 1 :
SELECT COUNT(id), SUM(hour) AS totHour, SUM(CASE WHEN kind = 1 THEN 1 ELSE 0 END) AS countKindOne FROM your_table;
Dans cette requête :
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!