SQLDeveloper: самый низкооплачиваемый сотрудник для указанного менеджера. Приведен пример кода

#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. Боже мой! извините за этого человека! Я действительно забыл убрать точку с запятой из чего-то! Ваш ответ был идеальным!