List the emps whose sal > his Manager but salary less than other Managers
Table
emp_ID emp_Name emp_sal_K emp_manager 1 Ali 200 3 2 Zaid 620 4 3 Mohd 1140 2 4 LILY 600 NULL 5 John 1240 6 6 Mike 1160 4 7 John 1240 6 8 Mohd 1640 2
Query
select * from emp_demo2 e1 where emp_sal_K > (select emp_ID from emp_demo2 e2 where e1.emp_manager = e2.emp_ID and e2.emp_sal_K < all (select emp_id from emp_demo2 e3 where e2.emp_ID = e3.emp_id))
Result: null columns. There are 4 managers in total 2
,4
,6
and 3
. Here clearly emp_id 2
Zaid is a person whose salary 620 is greater than his manager’s salary emp_id 4
which is 600 but less than all other managers emp_id 6
and 3
. So I should get that result but getting nothing.
Expected result
emp_ID emp_Name emp_sal_K emp_manager 2 Zaid 620 4
Advertisement
Answer
SELECT emp.* FROM emp_demo2 emp LEFT JOIN emp_demo2 mgr ON emp.emp_manager = mgr.emp_id WHERE emp.emp_sal_k > mgr.emp_sal_k AND emp.emp_sal_k < (SELECT Min(mgr1.emp_sal_k) FROM emp_demo2 emp1 JOIN emp_demo2 mgr1 ON emp1.emp_manager = mgr1.emp_id WHERE mgr1.emp_id <> emp.emp_manager AND mgr1.emp_id <> emp.emp_id)