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

如何在GRID DB中按部门查询员工的第二高薪资

关于GridDB中DENSE_RANK()的支持及查询语句实现

一、DENSE_RANK()在GridDB中的支持情况

GridDB完全支持DENSE_RANK()窗口函数,它遵循SQL:2003标准的窗口函数规范,能够针对分组(如按部门)内的数据进行排名计算,重复值会获得相同的排名且排名无间隔,完全适配你需求中按部门统计薪资排名的场景。

二、实现需求的查询语句

以下是满足你需求的SQL查询语句,通过CTE分步处理,逻辑清晰且兼容GridDB:

WITH dept_salary_ranks AS (
    SELECT
        Department,
        Salary,
        DENSE_RANK() OVER (PARTITION BY Department ORDER BY Salary DESC) AS salary_rank
    FROM 员工表
),
dept_second_highest_sal AS (
    SELECT
        Department,
        Salary AS second_highest_salary
    FROM dept_salary_ranks
    WHERE salary_rank = 2
    GROUP BY Department, Salary -- 避免部门存在多个相同第二高薪资时返回重复记录
)
SELECT
    e.Empid,
    e.Empname,
    e.Salary,
    e.Department,
    d.second_highest_salary
FROM 员工表 e
LEFT JOIN dept_second_highest_sal d ON e.Department = d.Department;

语句说明:

  1. dept_salary_ranks:为每个部门的薪资按降序计算排名,相同薪资会获得相同的排名值。
  2. dept_second_highest_sal:筛选出每个部门排名为2的薪资,通过GROUP BY确保每个部门仅返回一条第二高薪资记录。
  3. 最终关联查询:将原员工表与部门第二高薪资结果左连接,确保每个员工行都能展示所属部门的第二高薪资;若部门无第二高薪资(如仅1名员工),对应字段会显示NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:27:13