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

SQL如何在单条查询中计算员工总请求占全量总请求的百分比

解决方案

你可以通过单条SQL实现需求,以下提供两种兼容不同场景的写法:

通用兼容写法(适配所有SQL数据库版本)

通过子查询提前计算全量总请求数,再关联计算占比:

SELECT 
    Employee,
    ROUND(SUM(Requests) / total.total_requests, 2) AS `Percent requests`
FROM 
    你的表名,
    (SELECT SUM(Requests) AS total_requests FROM 你的表名) AS total
GROUP BY 
    Employee, total.total_requests;

逻辑说明:子查询(SELECT SUM(Requests) AS total_requests FROM 你的表名)会先算出所有员工的总请求数,因为结果只有1行,和原表关联后所有行都会带上这个全局总数值,之后按员工分组求和、相除取两位小数即可得到目标结果。

窗口函数写法(适配支持窗口函数的数据库,如MySQL 8.0+、PostgreSQL、SQL Server等)

写法更简洁,不需要显式关联子查询:

SELECT 
    DISTINCT Employee,
    ROUND(SUM(Requests) OVER (PARTITION BY Employee) / SUM(Requests) OVER (), 2) AS `Percent requests`
FROM 
    你的表名;

逻辑说明:

  • SUM(Requests) OVER (PARTITION BY Employee)按员工维度分区,计算每个员工的总请求数
  • SUM(Requests) OVER ()不设置分区条件,直接计算全表所有请求的总数值
  • 加DISTINCT是为了去重,避免同一个员工返回多条重复结果

使用时把你的表名替换为你实际的表名即可,如果你需要显示带%的百分比格式,把计算逻辑乘以100再拼接%符号即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:06:01