Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Bedingte Aggregationsabfrage mit einer Gruppierung nach

Sie sind ziemlich nah dran, Sie müssen nur die Bedingungen für die bedingte Aggregation, die Sie durchführen möchten, in die Aggregatfunktion einfügen:

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;

Die Ergebnisse sind weiterhin nach companyID gruppiert , aber die zweite Aggregationsfunktion führt eine Summe von Einsen und Nullen aus, je nachdem, ob sich der Benutzer innerhalb des letzten Monats angemeldet hat oder nicht.