Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta de agregação condicional com um grupo por


Você está bem perto, só precisa colocar as condições dentro da função de agregação para a agregação condicional que deseja executar:
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;

Os resultados ainda são agrupados por companyID , mas a segunda função de agregação executa uma soma de 1s e 0s dependendo se o usuário fez login no último mês ou não.