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

Comment effectuer une agrégation conditionnelle avec SUM et COUNT dans MySQL ?

Patricia Arquette
Libérer: 2024-11-16 07:32:02
original
592 Les gens l'ont consulté

How to Perform Conditional Aggregation with SUM and COUNT in MySQL?

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

Dans cette requête :

  • L'instruction CASE est utilisée pour évaluer la condition kind = 1.
  • Si la condition est VRAIE, elle renvoie 1.
  • Si la condition est FALSE, elle renvoie 0.
  • Le résultat de l'instruction CASE est ensuite transmis à la fonction d'agrégation SUM().

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