我有一个系统,用户从不同的公司登录。我正在尝试运行查询来查看每个公司的活跃用户数与用户总数。
Users
table:
userID
, companyID
, lastLogin
期望的输出:
companyID
, totalCompanyUsers
, numUsersWhoLoggedInWithinLastMonthFromCompany
查询尝试:
SELECT companyID, COUNT(userID) AS `numUsersWhoLoggedInWithinLastMonth`
FROM Users
WHERE IFNULL(TIMESTAMPDIFF(MONTH, lastLogin, NOW()),- 1) = 1
GROUP BY companyID;
我正在努力弄清楚如何拥有两个聚合函数,其中一个是有条件的。
您已经非常接近了,您只需要将条件放入聚合函数中即可执行您想要执行的条件聚合:
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;
结果仍然按以下分组companyID
,但第二个聚合函数根据用户是否在上个月内登录来执行 1 和 0 的求和。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)