--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;