问题描述
下面的例子是我的学习目的。
select dense_rank() over(partition by job order by salary desc) as rank,ename,job,salary
from emp;
输出:
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
期望得到以下结果。能否请您帮助我使用密集排名获取配置单元查询
预期结果:
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
解决方法
您的DENSE_RANK为每个职位的新工资创建一个新数字。为了获得预期的结果,您必须删除分区并按作业排序:
dense_rank() over(order by job)
现在每个新工作都会得到一个新号码。