数据集取自:Tim Hall 的 Oracle-Base 排名/分区文档最初的任务是对部门内的薪水进行排名。MYRANK 列是语法并引入
RANK() OVER (PARTITION BY deptno ORDER BY sal) AS myrank
但现在我想按最高薪水排序,然后是同一部门内的所有记录。然后第二高的薪水再次紧随同部门的所有记录。部门的顺序是一种巧合,它恰好与每个部门的最高薪水的顺序一致。
我想我可以用 rank() 代替 max() 来解决这个问题,例如:
MAX() OVER (PARTITION BY DEPTNO ORDER BY SAL) AS MAX
而不是 a order by MAX, DEPTNO
,但这失败了:invalid number of arguments
EMPNO DEPTNO SAL MYRANK
---------- ---------- ---------- ----------
7839 10 5000 3
7782 10 2450 2
7934 10 1300 1
7788 20 3000 4
7902 20 3000 4
7566 20 2975 3
7876 20 1100 2
7369 20 800 1
7698 30 2850 6
7499 30 1600 5
7844 30 1500 4
7654 30 1250 2
7521 30 1250 2
7900 30 950 1