6.dense_rank()over(partition by ... order by ...)
说明:
连续排序,当有两个第一名时,接下来还是第二名;三个第一名时,接下来也还是第二名。
partition by 不能单独使用。
6.1.根据工资进行降序排序
SELECT G.*, dense_rank()
OVER(order by 工资 desc) 工资降序
from ( select '张三'
人员,'财务' 部门, '5000' 工资 from dual
union
select '李四','财务', '5200'
from dual
union
select '王五','人事', '4000' from
dual
union
select '刘二','研发', '6500' from
dual
union
select '陈一','研发', '7000' from
dual
union
select '赵六','研发', '7000' from
dual) G
结果:
赵六 研发 7000 1
陈一 研发 7000 1
刘二 研发 6500 2
李四 财务 5200 3
张三 财务 5000 4
王五 人事 4000 5
6.2.dense_rank()over(partition by ... order
by ...)
示例:根据部门分组,部门工资进行排序
SELECT G.*, dense_rank()
OVER(partition by 部门 order by 工资 desc) 部门内工资排名
from ( select '张三'
人员,'财务' 部门, '5000' 工资 from dual
union
select '李四','财务', '5200'
from dual
union
select '王五','人事', '4000' from
dual
union
select '刘二','研发', '6500' from
dual
union
select '陈一','研发', '7000' from
dual
union
select '赵六','研发', '7000' from
dual) G
结果:
王五 人事 4000 1
赵六 研发 7000 1
陈一 研发 7000 1
刘二 研发 6500 2
李四 财务 5200 1
张三 财务 5000 2
加载中,请稍候......