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

子查询返回非预期行:筛选同部门同薪资员工问题排查

问题排查与SQL修正

问题原因

原SQL的子查询返回了所有有佣金员工的(d_id,salary)组合,包括那些仅对应单个员工的组合:

  • (20, 3000) 对应Jeremiah(仅他自己在该组合)
  • (10, 4000) 对应James(仅他自己在该组合)

这导致主查询把这些单个员工也纳入了结果,超出了预期范围。结合预期输出可以判断,真实需求是筛选出所在(d_id,salary)组合中既有佣金员工、又有至少两名员工的所有员工。

修正后的SQL

SELECT name, d_id, salary 
FROM employees 
WHERE (d_id, salary) IN (
    SELECT d_id, salary 
    FROM employees 
    GROUP BY d_id, salary 
    HAVING COUNT(*) > 1 AND MAX(commission) > 0
);

逻辑说明

  1. 子查询通过GROUP BY d_id, salary分组,筛选满足两个条件的组合:
    • COUNT(*) > 1:该组合下至少有两名员工
    • MAX(commission) > 0:该组合中存在至少一名有佣金的员工
  2. 主查询只选取属于这些合法组合的员工,最终得到预期结果:
named_idsalary
John103000
Jane103000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:30:59