Maison > base de données > tutoriel mysql > Comment effectuer une agrégation conditionnelle dans MySQL sans « SUM IF » et « COUNT IF » ?

Comment effectuer une agrégation conditionnelle dans MySQL sans « SUM IF » et « COUNT IF » ?

Mary-Kate Olsen
Libérer: 2024-11-21 00:52:12
original
317 Les gens l'ont consulté

How to Perform Conditional Aggregation in MySQL without 'SUM IF' and 'COUNT IF'?

MySQL : méthodes alternatives d'agrégation conditionnelle avec 'SUM IF' et 'COUNT IF'

Considérez le scénario suivant : vous avez une table avec des colonnes nommées « heure » ​​et « type » et souhaitez effectuer des calculs basés sur une condition. Par exemple, vous souhaiterez peut-être compter le nombre de lignes où la colonne « genre » est égale à 1 ou additionner la colonne « heure » uniquement pour les lignes où la colonne « genre » est 2.

Dans MySQL, la syntaxe d'utilisation de « SUM IF » ou « COUNT IF » n'est pas directement prise en charge. Au lieu de cela, vous pouvez utiliser l'instruction CASE pour obtenir une agrégation conditionnelle :

SELECT 
    count(id), 
    SUM(hour) as totHour, 
    SUM(case when kind = 1 then 1 else 0 end) as countKindOne
FROM table_name;
Copier après la connexion

Cette requête compte le nombre total de lignes, additionne la colonne « heure » pour toutes les lignes et compte le nombre de lignes où le « kind' est égale à 1.

Pour plus d'informations sur l'agrégation conditionnelle dans MySQL, reportez-vous aux ressources suivantes :

  • Documentation MySQL : [Fonctions CASE](https:// dev.mysql.com/doc/refman/8.0/en/case-statement.html)
  • Sujet de débordement de pile : [MySQL SUM IF champ b = champ a](https://stackoverflow.com/questions /2200315/mysql-sum-if-field-b-field-a)

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