根据公寓最高工资增加员工1000的工资

the*_*com 1 mysql

我的员工表结构如下图所示

在此输入图像描述

以下查询获得部门ID基于部门平均最高薪水

SELECT dep_id
FROM employee
GROUP BY dep_id
ORDER BY AVG( salary ) DESC
LIMIT 1 
Run Code Online (Sandbox Code Playgroud)

产量

dep_id
2
Run Code Online (Sandbox Code Playgroud)

但我在更新查询中有问题

UPDATE employee
SET salary = salary +1000
where dep_id = (
SELECT dep_id
   FROM employee
   GROUP BY dep_id
   ORDER BY AVG( salary ) DESC
   LIMIT 1
)
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 6

您当前SELECT声明的问题是它无法获得dep_id具有相同最高平均值的多个salary.我宁愿这样做,以获得dep_id,

SELECT  dep_id
FROM    employee
GROUP   BY dep_id
HAVING  AVG(salary) = 
        (
            SELECT  AVG(salary) avg_sal
            FROM    employee
            GROUP   BY dep_id
            ORDER   BY avg_sal DESC
            LIMIT   1
        )
Run Code Online (Sandbox Code Playgroud)

那么你现在可以更新salary每个emp_id平均工资最高的人.

UPDATE  employee a
        INNER JOIN
        (
            SELECT  dep_id
            FROM    employee
            GROUP   BY dep_id
            HAVING  AVG(salary) = 
                    (
                        SELECT  AVG(salary) avg_sal
                        FROM    employee
                        GROUP   BY dep_id
                        ORDER   BY avg_sal DESC
                        LIMIT   1
                    )
        ) b ON a.dep_id = b.dep_id
SET     a.salary = a.salary + 1000
Run Code Online (Sandbox Code Playgroud)