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

如何使用SQL查询各部门中经验最少的员工姓名及所属部门?

解决每个部门经验最少员工的查询问题

你的原SQL逻辑存在错误——group by dept, name是按部门+姓名分组,每个分组对应单个员工,所以min(exp)其实就是该员工自己的经验值,完全没实现“找部门内经验最少员工”的需求。

下面给你几种可行的解法:

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

用ROW_NUMBER()窗口函数给每个部门的员工按经验排序,直接筛选出经验最少的那一行:

SELECT name, department, experience
FROM (
    SELECT 
        name, 
        department, 
        experience,
        ROW_NUMBER() OVER (PARTITION BY department ORDER BY experience ASC) AS rn
    FROM your_table
) t
WHERE rn = 1;
  • 注意:如果部门里有多个员工经验相同且都是最小值,这个方法只会返回其中一个;要是想保留所有并列的,把ROW_NUMBER()换成RANK()或DENSE_RANK()就行。

方法2:子查询关联(兼容老版本SQL)

先查出每个部门的最小经验值,再和原表关联找到对应员工:

SELECT t.name, t.department, t.experience
FROM your_table t
JOIN (
    SELECT department, MIN(experience) AS min_exp
    FROM your_table
    GROUP BY department
) dept_min ON t.department = dept_min.department 
           AND t.experience = dept_min.min_exp;
  • 这个方法会返回部门内所有经验等于最小值的员工,适合需要保留并列情况的场景。

方法3:NOT EXISTS 语句

通过判断当前员工的经验是部门内最小的(即同部门没有比他经验更少的人):

SELECT name, department, experience
FROM your_table t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.department = t1.department 
      AND t2.experience < t1.experience
);
  • 同样会返回所有部门内经验最少的员工,包括并列情况。

内容的提问来源于stack exchange,提问作者Shonima N Jacob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:02:35