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

SQL报错排查:如何获取薪资超平均薪资50%的员工及部门经理信息

解决SQL查询中"no such column: emp_id"错误

错误原因

  • 你的子查询只返回了percentage字段,外层查询需要的emp_id、dep_id没在子查询里输出,自然找不到这些列。
  • 子查询直接用AVG(salary)会把整个员工表聚合为一行数据,没法对应到每个员工的薪资做计算。

修正后的SQL写法

写法一(简洁版,直接筛选薪资)

SELECT e.emp_id, d.manager
FROM employees e
INNER JOIN departments d ON e.dep_id = d.dep_id
WHERE e.salary > (SELECT AVG(salary) * 0.5 FROM employees);

直接算出全公司平均薪资的50%,筛选薪资超过这个值的员工,再关联部门表获取经理姓名,逻辑清晰高效。

写法二(保留薪资占比字段)

如果需要保留薪资占平均薪资的百分比字段,可以这么写:

SELECT t.emp_id, d.manager, t.percentage
FROM (
    SELECT 
        emp_id, 
        dep_id,
        (salary / (SELECT AVG(salary) FROM employees)) * 100 AS percentage
    FROM employees
) t
INNER JOIN departments d ON t.dep_id = d.dep_id
WHERE t.percentage > 50;

子查询里把emp_id、dep_id和计算出的percentage都返回,再和部门表关联筛选符合条件的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:50:15