Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête d'agrégation conditionnelle avec un groupe par

Vous êtes assez proche, il vous suffit de mettre les conditions à l'intérieur de la fonction d'agrégation pour l'agrégation conditionnelle que vous souhaitez effectuer :

SELECT
companyID, 
COUNT(userID) AS `totalCompanyUsers`,
SUM(CASE 
  WHEN 
    TIMESTAMPDIFF(MONTH, lastLogin, NOW()) < 1 THEN 1 
  ELSE 0
END
) AS `numUsersWhoLoggedInWithinLastMonth`
FROM Users
GROUP BY companyID;

Les résultats sont toujours regroupés par companyID , mais la deuxième fonction d'agrégation effectue une somme de 1 et de 0 selon que l'utilisateur s'est connecté au cours du dernier mois ou non.