Подбор сотрудников из отделов со средней зарплатой меньше - PullRequest
0 голосов
/ 19 марта 2019

Мне нужно написать запрос, который возвращает всех сотрудников из отделов со средней зарплатой меньше 12000. Я записал этот запрос

SELECT DEPARTMENT_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID,FIRST_NAME,LAST_NAME
HAVING AVG(SALARY) < 12000
ORDER BY LAST_NAME ASC;

, но, похоже, он не работает.Вместо того, чтобы брать всех сотрудников из этих отделов, нужны только те, у кого зарплата меньше 12000. Как правильно написать этот запрос?Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 19 марта 2019

Вам нужна средняя зарплата по отделу.Я бы использовал оконную функцию:

SELECT DEPARTMENT_ID, FIRST_NAME, LAST_NAME
FROM (SELECT e.*, AVG(SALARY) OVER (PARTITION BY DEPARTMENT_ID) as avg_salary_dept 
      FROM EMPLOYEES e
     ) e
WHERE avg_salary_dept < 12000
ORDER BY LAST_NAME ASC;
0 голосов
/ 19 марта 2019

Попробуй ..

SELECT e.DEPARTMENT_ID, e.FIRST_NAME, e.LAST_NAME
       from employee e where e.DEPARTMENT_ID in 
                                   (select e.DEPARTMENT_ID from employee e 
                                                  group by e.DEPARTMENT_ID
                                                   having avg(salary)<3000)
0 голосов
/ 19 марта 2019

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

SELECT e.DEPARTMENT_ID, e.FIRST_NAME, e.LAST_NAME
FROM EMPLOYEES a
WHERE exists (SELECT 1 FROM EMPLOYEES b
                          where a.department_id=b.department_id
                          HAVING AVG(b.SALARY) < 12000
                         );
0 голосов
/ 19 марта 2019

Вам нужен подзапрос:

SELECT e.DEPARTMENT_ID, e.FIRST_NAME, e.LAST_NAME
FROM EMPLOYEES e
WHERE e.DEPARTMENT_ID IN (SELECT e1.DEPARTMENT_ID
                          FROM EMPLOYEES e1
                          GROUP BY e1.DEPARTMENT_ID
                          HAVING AVG(e1.SALARY) < 12000
                         )
ORDER BY e.LAST_NAME ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...