统计多SiteID的UserID数量及明细的SQL实现需求
解决用户工作地点统计的SQL需求
假设存储数据的表名为user_work_sites,以下是针对两个需求的SQL实现:
需求1:统计当月曾在多个不同SiteID工作的UserID数量
SELECT COUNT(DISTINCT UserID) AS multi_site_user_count FROM ( SELECT UserID FROM user_work_sites GROUP BY UserID HAVING COUNT(DISTINCT SiteID) > 1 ) AS subquery;
逻辑说明:内层子查询通过分组UserID,筛选出拥有2个及以上不同SiteID的用户;外层统计这些用户的总数量,对应示例结果为1。
需求2:列出符合条件的UserID及其对应的不同SiteID明细
SELECT DISTINCT uws.UserID, uws.SiteID FROM user_work_sites uws JOIN ( SELECT UserID FROM user_work_sites GROUP BY UserID HAVING COUNT(DISTINCT SiteID) > 1 ) AS qualified_users ON uws.UserID = qualified_users.UserID ORDER BY uws.UserID, uws.SiteID;
逻辑说明:先通过子查询锁定符合条件的用户,再关联原表并使用DISTINCT去除同一用户同一地点的重复记录,最终输出用户对应的所有不同工作地点,对应示例结果会返回UserID 2023的两个SiteID。
内容的提问来源于stack exchange,提问作者Blondie
相关产品推荐
相关产品推荐

