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

如何在SQL中计算每行数据占总数的百分比?

解决SQL计算行占比的问题

你的需求是计算每行cnt占总cnt的百分比,之前的语句问题在于普通聚合函数sum(cnt)会将结果集合并成一行,无法保留原表的每行数据。需要使用窗口函数来获取全局的总cnt值,而非普通聚合。

正确SQL语句

SELECT 
    Survived, 
    cnt, 
    ROUND(100 * (cnt / SUM(cnt) OVER ()), 2) AS percentage
FROM survivalCnt;

语句说明

  • SUM(cnt) OVER ():窗口函数OVER()不带任何分区条件,会计算整个表的cnt总和(即549+342=891),并且为每行返回这个总和值。
  • 后续计算cnt / 总和再乘以100,用ROUND()保留两位小数,就能得到每行的占比。

执行结果

Survivedcntpercentage
No54961.62
Yes34238.38

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 09:19:54