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

求助:创建视图存储薪资最高的前2名员工信息(附SQL代码)

创建存储薪资最高前2名人员信息的视图

基础实现(取前2条,不处理并列)

如果只需要单纯取薪资排序后的前2条记录,可以用以下SQL创建视图:

CREATE VIEW Top2HighestPaidStaff AS
SELECT TOP 2
    s.StaffCode,
    s.StaffName,
    s.Birth,
    s.Gender,
    r.RoomName,
    b.Paid AS Salary
FROM STAFF s
JOIN BONUS b ON s.StaffCode = b.StaffCode
JOIN ROOM r ON b.RoomCode = r.RoomCode
ORDER BY b.Paid DESC;

代码说明:

  • 通过JOIN关联员工表(STAFF)、奖金表(BONUS)和部门表(ROOM),获取员工的基本信息、薪资及所属部门
  • ORDER BY b.Paid DESC 按薪资从高到低排序
  • TOP 2 指定取排序后的前2条记录
  • 创建完成后,执行SELECT * FROM Top2HighestPaidStaff即可查看结果

处理薪资并列的情况

如果存在多名员工薪资并列第2的情况,想要把这些员工都包含进来,可以用排名函数DENSE_RANK()实现:

CREATE VIEW Top2HighestPaidStaffWithTies AS
SELECT 
    StaffCode,
    StaffName,
    Birth,
    Gender,
    RoomName,
    Salary
FROM (
    SELECT 
        s.StaffCode,
        s.StaffName,
        s.Birth,
        s.Gender,
        r.RoomName,
        b.Paid AS Salary,
        -- 按薪资降序排名,相同薪资排名相同
        DENSE_RANK() OVER(ORDER BY b.Paid DESC) AS SalaryRank
    FROM STAFF s
    JOIN BONUS b ON s.StaffCode = b.StaffCode
    JOIN ROOM r ON b.RoomCode = r.RoomCode
) RankedStaff
WHERE SalaryRank <= 2;

代码说明:

  • 内层查询用DENSE_RANK()给每个员工的薪资排名,相同薪资的员工会得到相同的排名
  • 外层查询筛选出排名≤2的记录,这样所有薪资排名前2的员工(包括并列)都会被包含

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:52:06