2016-03-09 3 views
-2

Показать тех сотрудников, чья зарплата меньше, чем у его менеджера, но больше, чем зарплата любого другого менеджера с использованием запроса ORACLE SQLПоказать тех сотрудников, чья зарплата меньше, чем его ясли, но больше, чем зарплата любого другого менеджера с использованием запроса ORACLE SQL

+0

Мы должны знать вашу структуру данных, чтобы ответить на это! Какие таблицы у вас есть, какие соответствующие поля находятся в таблице, как они связаны? – Jur

+0

с использованием self join 1) empno, ename, esalry.mgr empno = 100, ename = A, esal = 1000, mgr = 101 2) empno = 101, ename = B, esal = 2000, mgr = 102 3) empno = 102 , ename = c, esal = 3000, mgr = 104 и т. д. я мог бы выполнить только половину запроса, который дает работникам, имеющим зарплату, большую, чем собственный менеджер, например. SELECT DISTINCT E1.LAST_NAME, E1.SALARY, E2.LAST_NAME, E2.SALARY FROM EMPLOYEES E1, СОТРУДНИКИ E2 ГДЕ E1.MANAGER_ID = E2.EMPLOYEE_ID И E1.SALARY> E2.SALARY. но не смог получить вторую часть, как сделать больше, чем зарплата любого другого менеджера. – JEYPRAGASH

ответ

0
WITH mgr_salaries (empno, ename, esal, mgr, mgr_salary) AS (
    SELECT empno, 
     ename, 
     salary, 
     mgr, 
     PRIOR salary 
    FROM Employees 
    START WITH mgr IS NULL 
    CONNECT BY PRIOR empno = mgr 
) 
SELECT * 
FROM mgr_salaries 
WHERE salary < mgr_salary 
AND NOT EXISTS (
     SELECT 1 
     FROM mgr_salaries x 
     WHERE x.mgr <> m.mgr 
     AND x.mgr_salary > m.salary 
     ); 
+0

Большое спасибо. Действительно помогите полностью ответить – JEYPRAGASH