sql >> Base de Datos >  >> RDS >> Mysql

Consulta de agregación condicional con un grupo por

Está bastante cerca, solo necesita poner las condiciones dentro de la función agregada para la agregación condicional que desea realizar:

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;

Los resultados todavía están agrupados por companyID , pero la segunda función de agregación realiza una suma de 1 y 0 dependiendo de si el usuario inició sesión en el último mes o no.