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

使用count和group by分组查询时如何计算各分组的百分比数值

可以直接实现,主流数据库可以通过窗口函数快速得到结果,具体实现方案如下:

  • 方案1:支持窗口函数的数据库(MySQL 8.0+、PostgreSQL、SQL Server、Oracle等通用写法)
    直接在聚合后用窗口函数计算全局总条数,不需要额外子查询扫描表,性能最优:
SELECT 
  no_tipo_origem,
  COUNT(*) AS total,
  ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER (), 1) AS percentage
FROM `table`
GROUP BY no_tipo_origem

计算逻辑说明:SUM(COUNT(*)) OVER() 会基于全表聚合后的结果计算所有分组的计数总和,也就是全表总记录数;乘以100.0是为了避免整数除法得到0的问题,最后用ROUND保留1位小数即可匹配你需要的输出格式。

  • 方案2:不支持窗口函数的低版本数据库(如MySQL 5.x)
    用子查询先计算全表总条数,再关联计算百分比:
SELECT 
  no_tipo_origem,
  COUNT(*) AS total,
  ROUND(COUNT(*) * 100.0 / t.total_count, 1) AS percentage
FROM `table`,
(SELECT COUNT(*) AS total_count FROM `table`) t
GROUP BY no_tipo_origem

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 15:48:02