Я пытаюсь выполнить упражнение, в котором мне предлагается создать новую колонку со средней зарплатой сотрудников в каждом отделе.
Моя БД содержит таблицу сотрудников и отделов. сотрудников - это список сотрудников, в которых, помимо прочих данных, зарплата каждого человека и их отдел_ид . отделы содержат отдела_идентификатора , названия_подразделения и т. д. Я уже использовал ALTER TABLE , чтобы добавить столбец с именем AVG_SALARY в отделы . Теперь я хотел бы заполнить его окладом AVG на основе столбца оклад из таблицы сотрудник . До сих пор я придумал много решений, но ни одно из них не сработало. Некоторые из них были:
UPDATE departments D
INNER JOIN employees E ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
SET AVG_SALARY = AVG(employees.SALARY);
GROUP BY DEPARTMENT_ID;
РЕЗУЛЬТАТ: Код ошибки: 1111. Неправильное использование групповой функции
UPDATE departments D
SET D.AVG_SALARY =
(SELECT AVG(e.SALARY)
FROM employees E INNER JOIN (SELECT * FROM departments) AS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
GROUP BY D.DEPARTMENT_ID);
РЕЗУЛЬТАТ: Код ошибки: 1242. Подзапрос возвращает более 1 строки
INSERT INTO departments (DEPARTMENT_ID, AVG_SALARY)
SELECT D.DEPARTMENT_ID, AVG(salary)
FROM EMPLOYEES E INNER JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
GROUP BY DEPARTMENT_ID;
РЕЗУЛЬТАТ: Код ошибки: 1364. Поле "DEPARTMENT_NAME" не имеет
значение по умолчанию
Кто-нибудь может здесь помочь?