Обновление значений столбцов схемы Oracle 11g HR - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь обновить зарплату всех сотрудников до максимальной зарплаты отдела, в котором он / она работает.

ERD: enter image description here

Моя попытка:

UPDATE EMPLOYEES SET
(SELECT SALARY
FROM EMPLOYEES
GROUP BY SALARY, DEPARTMENT_ID) = 
(SELECT "MAX"(SALARY)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID);

Очевидно, что это неправильно. Выдает ошибку:

ORA-01747: invalid user.table.column, table.column, or column specification

Как это сделать правильно?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

вы можете использовать merge

   MERGE INTO EMPLOYEES a
    USING ( SELECT DEPARTMENT_ID, MAX(SALARY) as sal
                      FROM EMPLOYEES group by DEPARTMENT_ID
         ) b
    ON ( a.DEPARTMENT_ID = b.DEPARTMENT_ID )
    WHEN MATCHED THEN 
    UPDATE SET  a.SALARY = b.sal
0 голосов
/ 06 ноября 2018

Вы можете использовать коррелированный подзапрос:

UPDATE EMPLOYEES
    SET SALARY = (SELECT MAX(SALARY)
                  FROM EMPLOYEES E2
                  WHERE E2.DEPARTMENT_ID = EMPLOYEES.DEPARTMENT_ID
                 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...