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

如何查询全列数据并在对应行旁展示薪资总和?

实现指定行显示薪资总计的SQL方案

这是个很明确的需求——只让结果集的第一行展示全表薪资总和,其余行对应列留空,我给你两种可行的实现方式,适配不同的数据库环境:

方法一:使用窗口函数(推荐,简洁高效)

窗口函数是现代数据库的常用特性,能快速计算全局/分区的聚合值,结合条件判断就能轻松实现需求:

SELECT 
    id,
    first_name,
    salary,
    -- 仅在id=1的行显示全表薪资总和,其余行返回NULL
    CASE WHEN id = 1 THEN SUM(salary) OVER() ELSE NULL END AS `sum(salary)`
FROM your_table;

原理说明

  • SUM(salary) OVER():因为OVER()子句没有指定分区或排序规则,会直接计算整个表的薪资总和(这里就是300);
  • CASE WHEN:通过判断id=1来控制只在第一行展示这个总和,其他行自动填充NULL(对应结果里的空值)。

方法二:使用子查询(兼容老版本数据库)

如果你的数据库不支持窗口函数(比如MySQL 5.7及以前版本),可以用子查询来实现同样效果:

SELECT 
    t.id,
    t.first_name,
    t.salary,
    CASE WHEN t.id = 1 THEN (SELECT SUM(salary) FROM your_table) ELSE NULL END AS `sum(salary)`
FROM your_table t;

原理说明

  • 子查询(SELECT SUM(salary) FROM your_table)先算出全表薪资总和;
  • 同样通过CASE WHEN条件,只在第一行展示这个总和,其余行留空。

测试用例验证

假设你的表数据如下:

idfirst_namesalary
1Hamdi100
2Abdo100
3Haji100

执行上述SQL后,会得到你期望的结果:

idfirst_namesalarysum(salary)
1Hamdi100300
2Abdo100
3Haji100

内容的提问来源于stack exchange,提问作者Captaîn Aamusane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:22:48