Maison > base de données > tutoriel mysql > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-11-13 14:32:02
original
319 Les gens l'ont consulté

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 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
Copier après la connexion

ou

SELECT count(id), SUM(hour) as totHour, COUNT( IF ( kind = 1 ) ) as countKindOne
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal