Oracle之row_number() over()函数
row_number() over()函数,用于给数据库表中的记录进行标号,在使用的时候,其后还跟着一个函数 over(),而函数 over() 的作用是将表中的记录进行分组和排序
即:ROW_NUMBER() OVER(PARTITION BY 分组的字段名 ORDER BY 排序的字段名)举例:用一条sql语句查询出test_emp表中每个部门工资前三位的数据
select department_id,---部门id max( salary ) sal1,---第一位 max(decode( rn, 2, salary )) sal2,---第二位 min( salary ) sal3 ---第三位 from (----取出分组后的前3条记录 select * from (----先按部门id分组,按工资排序,再给每行编号 select department_id, salary, row_number () over (partition by department_id order by salary desc ) as rn, count(*) over (partition by department_id order by 1 desc ) num from test.test_emp ) where rn<=3 and num>=3----(示例数据里因有的部门不足三人,为演示数据好看被过滤了) ) group by department_id
结果如下图所示:
本站内容来源于作者发布和网络转载,如有版权相关问题请及时与我们取得联系,我们将立即删除。