partition by 函数
生活随笔
收集整理的這篇文章主要介紹了
partition by 函数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
工作中用到的sql
selectt."ID",t."TITLE",t."SENDUSERID",t."SENDTIME",t."URL",t."USERID",t."TODOTYPE",t."MODELNAME",t."IMPORTANCE",t."SENDUSERNAME",t."SENDUSERDEPTNAME",t.DATAID,t.OPENFLAG,t.realuserid,t.status,t.donetime from (select m."ID",m."TITLE",m."SENDUSERID",m."SENDTIME",m."URL",m."USERID",m."TODOTYPE",m."MODELNAME",m."IMPORTANCE",m."SENDUSERNAME",m."SENDUSERDEPTNAME",m.DATAID,m.OPENFLAG,m.realuserid,m.status,m.donetime , row_number() over(partition by m.DATAID,m.status,m.realuserid order by m."SENDTIME" desc) rn from ( select a."ID",a."TITLE",a."SENDUSERID",a."SENDTIME",a."URL",a."USERID",a."TODOTYPE",a."MODELNAME",a."IMPORTANCE",a."SENDUSERNAME",a."SENDUSERDEPTNAME",a.DATAID,b.OPENFLAG,b.userid as realuserid,b.status,b.donetimefrom TD_HORIZON_Info a, TD_HORIZON_User bwhere a.id = b.TODOID) m )twhere rn=1;
--row_number() 順序排序 select row_number() over(partition by deptid order by salary) my_rank ,deptid,USERID,salary from tsaler; --rank() (跳躍排序,如果有兩個(gè)第一級(jí)別時(shí),接下來(lái)是第三級(jí)別) select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler; --dense_rank()(連續(xù)排序,如果有兩個(gè)第一級(jí)別時(shí),接下來(lái)是第二級(jí)) select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler; -------方案3解決方案 select * from (select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1; select * from (select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1;
selectt."ID",t."TITLE",t."SENDUSERID",t."SENDTIME",t."URL",t."USERID",t."TODOTYPE",t."MODELNAME",t."IMPORTANCE",t."SENDUSERNAME",t."SENDUSERDEPTNAME",t.DATAID,t.OPENFLAG,t.realuserid,t.status,t.donetime from (select m."ID",m."TITLE",m."SENDUSERID",m."SENDTIME",m."URL",m."USERID",m."TODOTYPE",m."MODELNAME",m."IMPORTANCE",m."SENDUSERNAME",m."SENDUSERDEPTNAME",m.DATAID,m.OPENFLAG,m.realuserid,m.status,m.donetime , row_number() over(partition by m.DATAID,m.status,m.realuserid order by m."SENDTIME" desc) rn from ( select a."ID",a."TITLE",a."SENDUSERID",a."SENDTIME",a."URL",a."USERID",a."TODOTYPE",a."MODELNAME",a."IMPORTANCE",a."SENDUSERNAME",a."SENDUSERDEPTNAME",a.DATAID,b.OPENFLAG,b.userid as realuserid,b.status,b.donetimefrom TD_HORIZON_Info a, TD_HORIZON_User bwhere a.id = b.TODOID) m )twhere rn=1;
?
?
Parttion?by?關(guān)鍵字是Oracle中分析性函數(shù)的一部分,它和聚合函數(shù)不同的地方在于它能夠返回一個(gè)分組中的多條記錄,聚合函數(shù)一般只有一條反映統(tǒng)計(jì)值的結(jié)果
??場(chǎng)景:查詢出每個(gè)部門工資最低的員工編號(hào)【每個(gè)部門可能有兩個(gè)最低的工資員工】--row_number() 順序排序 select row_number() over(partition by deptid order by salary) my_rank ,deptid,USERID,salary from tsaler; --rank() (跳躍排序,如果有兩個(gè)第一級(jí)別時(shí),接下來(lái)是第三級(jí)別) select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler; --dense_rank()(連續(xù)排序,如果有兩個(gè)第一級(jí)別時(shí),接下來(lái)是第二級(jí)) select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler; -------方案3解決方案 select * from (select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1; select * from (select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1;
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhouyanan/p/6024072.html
總結(jié)
以上是生活随笔為你收集整理的partition by 函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Javascript闭包概念剖析
- 下一篇: 二叉树操作整理