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

如何用MAX、SUM函数嵌套实现按工龄分组取最高薪资后求和的SQL查询

问题分析

你写的SQL存在两处核心错误:

  • GROUP BY 同时指定了year_experince和salary,相当于按「工龄+薪资」的组合维度分组,每个分组的MAX(salary)实际就是分组自身的薪资值,无法得到每个工龄维度的最高薪资
  • 直接将SELECT子查询放在SUM函数的参数中,不符合SQL语法要求,无法正常执行

正确实现方案

可以通过嵌套子查询的方式实现需求,内层查询先按工龄分组取每组最高薪资,外层对所有最高薪资求和即可:

SELECT SUM(max_salary) AS total_max_salary
FROM (
    -- 内层按工龄分组,取每个工龄的最高薪资
    SELECT MAX(salary) AS max_salary
    FROM employeeSystem
    GROUP BY year_experince
) AS group_max;

逻辑验证

对应你给出的示例场景:工龄5年的员工有5000、8000两个薪资,内层分组查询会返回该组最高值8000,外层求和时就会用8000参与计算,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:57:01