#sql #oracle-sqldeveloper
#sql #oracle-sqldeveloper
Вопрос:
Я пытаюсь написать запрос для отображения номера менеджера. и самый низкооплачиваемый сотрудник для менеджера. мы отбрасываем заработную плату менее 1 тыс. Поэтому я попытался написать для нее код, но он выдает ошибку. Я думаю, что мне нужно отредактировать условие FROM во второй строке:
SELECT empno, sal
FROM emp a, emp b
WHERE empno IN (SELECT boss.empno
FROM emp a, emp boss
WHERE a.super = boss.empno)
AND MIN(sal) >1000;
Ответ №1:
Попробуйте это:
SELECT m.empno, min(e.sal)
FROM emp e, emp m
WHERE e.super = m.empno
GROUP BY m.empno
HAVING min(e.sal) > 1000
В основном выполняется САМОСОЕДИНЕНИЕ в таблице сотрудников и группировка ПО менеджеру и получение минимальной зарплаты сотрудника.
Еще не тестировал, поэтому может потребоваться небольшая настройка
Комментарии:
1. но как мне сделать это в порядке убывания зарплаты?
2. Попробуйте добавить
ORDER BY min(e.sal) DESC
послеHAVING
предложения. Или добавьте псевдоним вSELECT
предложение и изменитеmin(e.sal)
наmin(e.sal) minsal
, а затем добавьтеORDER BY minsal DESC
послеHAVING
предложения.3. Боже мой! извините за этого человека! Я действительно забыл убрать точку с запятой из чего-то! Ваш ответ был идеальным!