oracle对查询结果进行排名


要解决的问题:我们想对查询出来的数据进行排名统计,但又不想在源数据中插入相应的字段。

解决方法: 以oracle中scott用户下的emp表为例演示

对所有员工的工资进行统计排名,查询语句如下:

select empno,sal, rank() over(order by sal desc) as sal_rank from emp;
结果如下图:

oracle对查询结果进行排名_第1张图片

select empno,sal, dense_rank() over(order by sal desc) as sal_rank from emp;
结果如下图:

oracle对查询结果进行排名_第2张图片
以上两种情况演示了不同排名算法时对结果的操作,接下来考虑这么一种情况:对指定部门员工的薪水进行排名统计。

解决方法如下:

select empno,deptno,sal, rank() over(partition by deptno order by sal desc) as sal_rank from emp;
结果如下图:
oracle对查询结果进行排名_第3张图片

rank:处理等值排名时占位显示;
dense_rank:处理等值排名时不占位;
partition by column_name:指定在某范围内进行排名;
over(order by column_name):指定以哪个字段进行排名统计。

你可能感兴趣的:(oracle)