Top 2 Salary from each Department:
+-----+------+-----------+-------+----------+-------+------+
|empno| ename|designation|manager| hire_date| sal|deptno|
+-----+------+-----------+-------+----------+-------+------+
| 7369| SMITH| CLERK| 7902|1980-12-17| 800.00| 20|
| 7499| ALLEN| SALESMAN| 7698|1981-02-20|1600.00| 30|
| 7521| WARD| SALESMAN| 7698|1981-02-22|1250.00| 30|
| 7566| JONES| MANAGER| 7839|1981-04-02|2975.00| 20|
| 7654|MARTIN| SALESMAN| 7698|1981-09-28|1250.00| 30|
| 7698| BLAKE| MANAGER| 7839|1981-05-01|2850.00| 30|
| 7782| CLARK| MANAGER| 7839|1981-06-09|2450.00| 10|
| 7788| SCOTT| ANALYST| 7566|1982-12-09|3000.00| 20|
| 7839| KING| PRESIDENT| NULL|1981-11-17|5000.00| 10|
| 7844|TURNER| SALESMAN| 7698|1981-09-08|1500.00| 30|
| 7876| ADAMS| CLERK| 7788|1983-01-12|1100.00| 20|
| 7900| JAMES| CLERK| 7698|1981-12-03| 950.00| 30|
| 7902| FORD| ANALYST| 7566|1981-12-03|3000.00| 20|
| 7934|MILLER| CLERK| 7782|1982-01-23|1300.00| 10|
+-----+------+-----------+-------+----------+-------+------+
+------+----------+--------+
|deptno| dname| loc|
+------+----------+--------+
| 10|ACCOUNTING|NEW YORK|
| 20| RESEARCH| DALLAS|
| 30| SALES| CHICAGO|
| 40|OPERATIONS| BOSTON|
+------+----------+--------+
Solution-1:
select e.ename,
d.dname,
e.sal
d.dname,
e.sal
from emp e join dept d
on e.deptno = d.deptno
where e.sal in
(
select sal from
(
select ename,
salary,
deptno,
DENSE_RANK() over(partition by deptno order by sal desc)rn from emp)rn1
salary,
deptno,
DENSE_RANK() over(partition by deptno order by sal desc)rn from emp)rn1
where rn1.rn <=2);
No comments:
Post a Comment