Maison  >  Article  >  base de données  >  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
Mary-Kate Olsenoriginal
2024-11-21 00:52:12243parcourir

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;

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