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

Betinget aggregeringsforespørgsel med en gruppe efter

Du er ret tæt på, du skal bare sætte betingelserne inde i aggregeringsfunktionen for den betingede aggregering, du vil udføre:

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;

Resultaterne er stadig grupperet efter companyID , men den anden aggregeringsfunktion udfører en sum af 1'er og 0'er afhængigt af, om brugeren er logget ind inden for den sidste måned eller ej.




  1. Float eller decimal for priser?

  2. Sådan deaktiveres MySQL Strict Mode

  3. Automatisk forøgelse af primærnøgle i SQL Server Management Studio 2012

  4. Oracle Bulk Collect-eksempel ved hjælp af Cursor Rowtype Type Object