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

Oracle HR模式下各部门最低工资员工的纯SQL实现咨询

两种纯SQL实现各部门薪资最低员工查询的方法

针对HR模式的Employees表,以下是两种不用分析函数的等价实现方案:

方法一:GROUP BY + 自连接

先通过分组查询得到每个部门的最低工资,再将结果与原表关联,匹配部门ID和薪资条件,从而获取完整的员工信息:

SELECT e.employee_id, e.first_name, e.department_id, e.salary
FROM employees e
INNER JOIN (
    -- 子查询获取各部门最低工资
    SELECT department_id, MIN(salary) AS dept_min_salary
    FROM employees
    GROUP BY department_id
) dm ON e.department_id = dm.department_id 
   AND e.salary = dm.dept_min_salary;

如果存在部门ID为NULL的员工(即未分配部门的员工),可以把INNER JOIN换成LEFT JOIN,HR模式里这类员工的部门ID统一为NULL,分组后会单独成一组,INNER JOIN也能匹配到。

方法二:标量子查询匹配

直接在WHERE子句中使用标量子查询,判断当前员工的薪资是否等于其所在部门的最低工资:

SELECT e.employee_id, e.first_name, e.department_id, e.salary
FROM employees e
WHERE e.salary = (
    SELECT MIN(salary)
    FROM employees
    WHERE department_id = e.department_id
);

这个方法逻辑更直观,子查询会针对每一行员工数据,返回对应部门的最低工资,再与当前员工的薪资做比较,符合条件的就会被筛选出来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:25:30