|
要解决的问题:我们想对查询出来的数据进行排名统计,但又不想在源数据中插入相应的字段。
解决方法:以oracle中scott用户下的emp表为例演示
对所有员工的工资进行统计排名,查询语句如下:
select empno,sal,rank() over(order by sal desc) as sal_rank from emp;
结果如下图:
select empno,sal,dense_rank() over(order by sal desc) as sal_rank from emp;
结果如下图:
以上两种情况演示了不同排名算法时对结果的操作,接下来考虑这么一种情况:对指定部门员工的薪水进行排名统计。
解决方法如下:
select empno,deptno,sal,rank() over(partition by deptno order by sal desc) as sal_rank from emp;
结果如下图:
rank:处理等值排名时占位显示;
dense_rank:处理等值排名时不占位;
partition by column_name:指定在某范围内进行排名;
over(order by column_name):指定以哪个字段进行排名统计。 |
|
|