sql >> Databasteknik >  >> RDS >> Mysql

Villkorlig aggregeringsfråga med en grupp efter

Du är ganska nära, du behöver bara sätta villkoren i aggregatfunktionen för den villkorliga aggregering du vill utföra:

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;

Resultaten är fortfarande grupperade efter companyID , men den andra aggregeringsfunktionen utför en summa av 1:or och 0:or beroende på om användaren loggat in under den senaste månaden eller inte.




  1. SQL Server *=Operatör?

  2. Hur man gör detta i Laravel, underfråga var i

  3. 2 funktioner för att få året från en dejt i Oracle

  4. Undvik dubbla citattecken med variabel inuti HTML-eko