Mysql
 sql >> Database >  >> RDS >> Mysql

Query di aggregazione condizionale con un gruppo per

Sei abbastanza vicino, devi solo inserire le condizioni all'interno della funzione di aggregazione per l'aggregazione condizionale che desideri eseguire:

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;

I risultati sono ancora raggruppati per companyID , ma la seconda funzione di aggregazione esegue una somma di 1 e 0 a seconda che l'utente abbia effettuato l'accesso nell'ultimo mese o meno.