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

求助:使用分析函数查询各部门最晚入职且ID最小的员工

问题排查与修正

你的SQL存在几个关键问题,导致无法正确输出结果:

  • 子查询只生成了行号,没有选择员工的其他字段,外层查询根本拿不到员工的ID、姓名等信息
  • ROW_NUMBER()没有设置别名,WHERE子句里的A = 1完全找不到对应的字段
  • 排序逻辑不满足需求:只按入职日期倒序,没处理入职日期相同的情况,需要追加employee_id asc来保证同部门最晚入职的员工里选ID最小的
  • 子查询的表别名和外层的别名重复,容易引发语法混淆

修正后的SQL如下:

SELECT 
    employee_id,
    department_id,
    first_name,
    last_name,
    hire_date,
    job_id
FROM (
    SELECT 
        employee_id,
        department_id,
        first_name,
        last_name,
        hire_date,
        job_id,
        ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY hire_date DESC, employee_id ASC) AS rn
    FROM hr.EMPLOYEES
) t
WHERE rn = 1;

关键修改说明:

  1. 子查询中新增了所有需要展示的员工字段,同时给ROW_NUMBER()结果起别名rn
  2. 排序规则补充employee_id ASC,确保同部门入职日期最晚的员工中,ID最小的会被标记为行号1
  3. 外层查询通过别名t引用子查询结果,过滤行号rn = 1的记录,得到各部门符合要求的员工

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:00:49