Oracle partition by order by usage

--row_number() sort order
select row_number() over(partition by deptid order by salary) my_rank ,deptid,USERID,salary from tsaler;
--rank() (jump sort, if there are two first levels, then the third level)
select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler;
--dense_rank() (sequential ordering, if there are two first rank, next is second rank)
select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler;
-------Scheme 3 Solution
select * from (select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1;
select * from (select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1;

 

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326848495&siteId=291194637