您的位置:首页 > 数据库 > Oracle

Oracle 中实例详解ROW_NUMBER()用法

2013-08-12 14:25 302 查看
ROW_NUMBER()语法如下:

1、row_number() over(order by column desc)先对列column按照降序,再为每条记录返回一个序列号:
SELECT D.*, ROW_NUMBER() OVER(ORDER BY D.R_OPATE_NUM DESC) AS INX FROM REPORT_DATA D
2、row_number() over(partition by column1 order by column2 asc) 先按照column1分组,再对分组后的数据进行以column2升序排列
select personalid,ct_smp_type,row_number() over(partition by personalid order by ct_smp_type asc) rn from neogoodsrule

语法1的具体实例:获取前100名人员的排名信息,如下
WITH REPORT_DATA AS
(SELECT DW.DWID,DW.DWMC,JY.JYXM,JY.JH,RMPC.R_OPATE_NUM
FROM REPORT_MONTH_PERSON_COUNT RMPC,JWT_JYXX JY,T_DWXX DW
WHERE RMPC.JYID = JY.JYUSERID
AND JY.SSDW = DW.DWID
AND RMPC.R_YEAR = 2013
AND RMPC.R_MONTH = 6
AND JY.SSDW LIKE '4102%'
ORDER BY RMPC.R_OPATE_NUM DESC)
SELECT B.*
FROM (SELECT D.*, ROW_NUMBER() OVER(ORDER BY D.R_OPATE_NUM DESC) AS INX
FROM REPORT_DATA D
) B
WHERE B.INX <=100
ORDER BY B.INX



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: