gpt4 book ai didi

mysql - 带分组依据的条件聚合查询

转载 作者:行者123 更新时间:2023-11-28 23:28:37 26 4
gpt4 key购买 nike

我有一个系统,用户可以从不同的公司登录。我正在尝试运行查询以查看每家公司的活跃用户数与用户总数。

用户表:

用户ID公司IDlastLogin

期望的输出:

companyIDtotalCompanyUsersnumUsersWhoLoggedInWithinLastMonthFromCompany

查询尝试:

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 的总和。

关于mysql - 带分组依据的条件聚合查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38216640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com