sql >> Database >  >> RDS >> Mysql

Voorwaardelijke aggregatiequery met een groep op

Je bent redelijk dichtbij, je hoeft alleen de voorwaarden in de aggregatiefunctie te plaatsen voor de voorwaardelijke aggregatie die je wilt uitvoeren:

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;

De resultaten zijn nog steeds gegroepeerd op companyID , maar de tweede aggregatiefunctie voert een som van 1s en 0s uit, afhankelijk van of de gebruiker zich de afgelopen maand heeft aangemeld of niet.




  1. Retourneren van resultaat, zelfs voor elementen in de IN-lijst die niet in de tabel voorkomen

  2. MySQL:Hoe haal ik een willekeurige rij of meerdere willekeurige rijen op?

  3. #1273 - Onbekende sortering:'utf8mb4_unicode_ci' cPanel

  4. SQL-weergaven gebruiken om gegevens toe te voegen/bewerken in Microsoft Access