You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并分组统计查询与总数量查询以获取用户档案占比

合并SQL查询计算各档案用户占比

我有两个查询语句:
第一个用于统计各档案的用户数:

select count(id) from table_user group by idProfile

第二个用于统计总用户数:

select count(id) from table_user

需要合并这两个查询,获取各档案用户数、总用户数以及对应的档案ID,从而计算各档案的用户占比。

示例数据

ididProfile
01
12
21
33
41
52
62
71

期望结果

nbProfileByIdProfilenbTotalProfileIdProfile
481
382
183

解决方案

方法一:使用窗口函数(推荐)

窗口函数可直接在分组查询中获取全局总计数,写法简洁且性能更优:

SELECT 
    COUNT(id) AS nbProfileByIdProfile,
    COUNT(id) OVER() AS nbTotalProfile,
    idProfile
FROM table_user
GROUP BY idProfile

COUNT(id) OVER() 会计算整个table_user表的总记录数,和每个分组的用户数一同返回,完美匹配需求。

方法二:使用子查询

通过子查询单独获取总用户数,再与分组统计结果结合:

SELECT 
    COUNT(tu.id) AS nbProfileByIdProfile,
    (SELECT COUNT(id) FROM table_user) AS nbTotalProfile,
    tu.idProfile
FROM table_user tu
GROUP BY tu.idProfile

子查询(SELECT COUNT(id) FROM table_user)先计算总用户数,再将该值与每个档案的用户数关联展示。

两种方法都能得到期望结果,窗口函数在数据量较大时通常表现更好。

内容的提问来源于stack exchange,提问作者user10863293

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:42:19