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

如何在SQL中计算表格数据百分比?现有语句仅返回首行结果

问题修正方案

你的SQL语句仅返回首行结果,是因为使用SUM()聚合函数时未指定分组逻辑,数据库会将整张表视为一个分组,最终只输出一条聚合后的结果。以下是两种可行的修正方法:

方法一:使用窗口函数(推荐,适用于支持SQL:2008及以上标准的数据库,如MySQL 8+、PostgreSQL、SQL Server等)

窗口函数可以在不分组的前提下,计算整张表的总和作为每行的分母,直接得到每个动物的占比:

SELECT 
    Animal,
    ROUND(Number / SUM(Number) OVER () * 100, 2) AS `Number %`,
    ROUND(Feed / SUM(Feed) OVER () * 100, 2) AS `Feed %`
FROM Vets;
  • OVER ()表示计算全表范围的总和
  • ROUND(..., 2)用于将百分比保留两位小数,可根据需求调整位数

方法二:使用子查询计算总数(兼容旧版本数据库)

如果你的数据库不支持窗口函数,可以通过子查询预先计算出Number和Feed的总数值,再逐行计算占比:

SELECT 
    v.Animal,
    ROUND(v.Number / (SELECT SUM(Number) FROM Vets) * 100, 2) AS `Number %`,
    ROUND(v.Feed / (SELECT SUM(Feed) FROM Vets) * 100, 2) AS `Feed %`
FROM Vets v;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:40:58