Below example is for my learning purpose.
select dense_rank() over(partition by job order by salary desc) as rank, ename,job,salary
from emp;
output:
rank ename job salary 1 SCOTT ANALYST 3000 1 FORD ANALYST 3000 1 MILLER CLERK 1300 2 ADAMS CLERK 1100 3 JAMES CLERK 950 4 SMITH CLERK 800 1 JONES MANAGER 2975 2 BLAKE MANAGER 2850 3 CLARK MANAGER 2450 1 KING PRESIDENT 5000 1 ALLEN SALESMAN 1600 2 TURNER SALESMAN 1500 3 MARTIN SALESMAN 1250 3 WARD SALESMAN 1250
Am expecting the below result .Can you please someone help me to get the hive query using the dense rank
Expected result:
rank ename job salary 1 SCOTT ANALYST 3000 1 FORD ANALYST 3000 2 MILLER CLERK 1300 2 ADAMS CLERK 1100 2 JAMES CLERK 950 2 SMITH CLERK 800 3 JONES MANAGER 2975 3 BLAKE MANAGER 2850 3 CLARK MANAGER 2450 4 KING PRESIDENT 5000 5 ALLEN SALESMAN 1600 5 TURNER SALESMAN 1500 5 MARTIN SALESMAN 1250 5 WARD SALESMAN 1250
Your DENSE_RANK creates a new number for each new salary per job. To get your expected result you must remove the partitioning and order by job:
dense_rank() over(order by job)
Now every new job gets a new number.