Подбор сотрудников из отделов со средней зарплатой меньше

Нет стандартного способа сделать это. Вы должны сохранить длину выделенной памяти в другой переменной или использовать «контейнер», который отслеживает вас.

На некоторых платформах есть функции для поиска количества байтов в распределении, например. Symbian как функция AllocSize(ptr).

0
задан Kacper Kusiak 19 March 2019 в 10:38
поделиться

3 ответа

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

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;
0
ответ дан Yogesh Sharma 19 March 2019 в 10:38
поделиться

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

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
ответ дан Gordon Linoff 19 March 2019 в 10:38
поделиться

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

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
ответ дан fa06 19 March 2019 в 10:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: