日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 分析函数--Row_Number()

發(fā)布時(shí)間:2025/6/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 分析函数--Row_Number() 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

row_number() over ([partition by col1] order by col2) ) as 別名
表示根據(jù)col1分組,在分組內(nèi)部根據(jù) col2排序
而這個(gè)“別名”的值就表示每組內(nèi)部排序后的順序編號(組內(nèi)連續(xù)的唯一的),[partition by col1] 可省略。

??

ROW_NUMBER()語法如下:

1、row_number() over(order by column asc)先對列column按照升序,再為每條記錄返回一個(gè)序列號:

select personalid,row_number() over(order by personalid asc) rn from ?neogoodsrule

2、row_number() over(partition by column1 order by column2 asc) 先按照column1分組,再對分組后的數(shù)據(jù)進(jìn)行以column2升序排列

select personalid,ct_smp_type,row_number() over(partition by personalid order by ct_smp_type asc) rn from neogoodsrule

?row_number()over(partition by col1 order by col2)表示根據(jù)col1分組,在分組內(nèi)部根據(jù)col2排序,而此函數(shù)計(jì)算的值就表示每組內(nèi)部排序后的順序編號(組內(nèi)連續(xù)的唯一的)。
與rownum的區(qū)別在于:使用rownum進(jìn)行排序的時(shí)候是先對結(jié)果集加入偽劣rownum然后再進(jìn)行排序,而此函數(shù)在包含排序從句后是先排序再計(jì)算行號碼。
row_number()和rownum差不多,功能更強(qiáng)一點(diǎn)(可以在各個(gè)分組內(nèi)從1開始排序)。
rank()是跳躍排序,有兩個(gè)第二名時(shí)接下來就是第四名(同樣是在各個(gè)分組內(nèi))
dense_rank()也是連續(xù)排序,有兩個(gè)第二名時(shí)仍然跟著第三名。相比之下row_number是沒有重復(fù)值的。

oracle 分析函數(shù) row_number(),返回一個(gè)整數(shù)值(>=1);

語法格式:

1.row_number() over (order by col_1[,col_2 ...])

作用:按照col_1[,col_2 ...]排序,返回排序后的結(jié)果集,

此用法有點(diǎn)像rownum,為每一行返回一個(gè)不相同的值:

select rownum,ename,job,???
?????? row_number() over (order by rownum) row_number???
from emp;???
??? ROWNUM ENAME????? JOB?????? ROW_NUMBER???
---------- ---------- --------- ----------???
???????? 1 SMITH????? CLERK????????????? 1???
???????? 2 ALLEN????? SALESMAN?????????? 2???
???????? 3 WARD?????? SALESMAN?????????? 3???
???????? 4 JONES????? MANAGER??????????? 4???
???????? 5 MARTIN???? SALESMAN?????????? 5???
???????? 6 BLAKE????? MANAGER??????????? 6???
???????? 7 CLARK????? MANAGER??????????? 7???
???????? 8 SCOTT????? ANALYST??????????? 8???
???????? 9 KING?????? PRESIDENT????????? 9???
??????? 10 TURNER???? SALESMAN????????? 10???
??????? 11 ADAMS????? CLERK???????????? 11???
??????? 12 JAMES????? CLERK???????????? 12???
??????? 13 FORD?????? ANALYST?????????? 13???
??????? 14 MILLER???? CLERK???????????? 14?

如果沒有partition by子句, 結(jié)果集將是按照order by 指定的列進(jìn)行排序;

with row_number_test as(???
???? select 22 a,'twenty two' b from dual union all???
???? select 1,'one' from dual union all???
???? select 13,'thirteen' from dual union all???
???? select 5,'five' from dual union all???
???? select 4,'four' from dual)???
select a,b,???
?????? row_number() over (order by b)???
from row_number_test???
order by a;?

正如我們所期待的,row_number()返回按照b列排序的結(jié)果,

然后再按照a進(jìn)行排序,才得到下面的結(jié)果:

A B????????? ROW_NUMBER()OVER(ORDERBYB)???
-- ---------- --------------------------???
1 one???????????????????????????????? 3???
4 four??????????????????????????????? 2???
5 five??????????????????????????????? 1???
13 thirteen??????????????????????????? 4???
22 twenty two????????????????????????? 5?

2.row_number() over (partition by col_n[,col_m ...] order by col_1[,col_2 ...])

作用:先按照col_n[,col_m ...進(jìn)行分組,

再在每個(gè)分組中按照col_1[,col_2 ...]進(jìn)行排序(升序),

最后返回排好序后的結(jié)果集:

with row_number_test as(???
???? select 22 a,'twenty two' b,'*' c from dual union all???
???? select 1,'one','+' from dual union all???
???? select 13,'thirteen','*' from dual union all???
???? select 5,'five','+' from dual union all???
???? select 4,'four','+' from dual)???
select a,b,???
?????? row_number() over (partition by c order by b) row_number???
from row_number_test???
order by a;?
?

這個(gè)例子中,我們先按照c列分組,分為2組('*'組,'+'組),

再按照每個(gè)小組的b列進(jìn)行排序(按字符串首字母的ascii碼排),

最后按照a列排序,得到下面的結(jié)果集:

A B????????? ROW_NUMBER???
-- ---------- ----------???
1 one???????????????? 3???
4 four??????????????? 2???
5 five??????????????? 1???
13 thirteen??????????? 1???
22 twenty two?????????
本篇文章來源于 Linux公社網(wǎng)站(www.linuxidc.com)? 原文鏈接:http://www.linuxidc.com/Linux/2011-04/34251.htm

轉(zhuǎn)載于:https://www.cnblogs.com/kting/p/3070681.html

總結(jié)

以上是生活随笔為你收集整理的Oracle 分析函数--Row_Number()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女18网站| 日韩一区二区三区在线视频 | 97人人模人人爽人人少妇 | 在线观看一区二区三区视频 | 日韩成人在线视频观看 | 午夜国产福利 | 一区二区日韩在线观看 | 成人高清网站 | 亚洲成人生活片 | 久久久久久久99 | 极品新婚夜少妇真紧 | 麻豆精品视频在线 | 国产91丝袜在线18 | 小辣椒福利视频导航 | 三级性生活片 | 一本一道av | 久久99国产精品视频 | 免费成人结看片 | 天堂网一区二区三区 | 黑丝av在线 | 134vcc影院免费观看 | 国产精品成人一区二区三区 | 天天射综合网站 | 福利小视频在线观看 | 狠狠cao日日穞夜夜穞av | 91视频免费看 | 中文字幕在线观看一区二区 | 免费成人深夜夜行网站视频 | 中文字幕 国产精品 | 欧美日韩aaa | 在线观看黄网站 | 亚洲成人av | 亚洲最大综合网 | 99在线观看免费 | 国产亚洲视频在线观看 | 九九热在线视频免费观看 | 夜夜涩 | 91黄色在线观看 | 美女扒开尿口来摸 | 精品国产乱码久久久久久预案 | 99re在线视频播放 | 亚洲人成高清 | 香蕉视频在线视频 | 亚洲精品9999 | 五个女闺蜜把我玩到尿失禁 | 久久国产精品精品国产色婷婷 | 久久久久久久偷拍 | 一本一道波多野结衣av黑人 | hs网站在线观看 | 成年人免费在线视频 | 欧美日韩久久 | 一区二区三区四区五区av | 韩国一区二区三区在线观看 | 色激情网| 国产噜噜噜噜噜久久久久久久久 | 日韩中文字幕一区二区 | 99久久夜色精品国产亚洲 | 三级不卡视频 | 麻豆69xxnxxporn| 亚洲成人网络 | 久久成 | 五月婷婷天堂 | 日韩在线综合 | 特级西西444www高清大视频 | av电影一区二区 | 久久久久久久久黄色 | 中文字幕一区二区三区免费看 | 成年人看的黄色 | 天天操天天爽天天射 | 久久这里只有精品6 | 亚洲性综合 | 91九色中文 | 黄色a在线 | 99爱在线 | 淫欲av | 青草视频在线 | 久久亚洲免费视频 | 完全免费av | 在线观看a视频 | 久久精品国产亚洲7777 | 久久精品欧美一区二区三区不卡 | 天天天天躁天天爱天天碰2018 | 国产传媒在线观看 | 国产九九九精品 | 宅男的天堂 | 午夜视频福利在线观看 | av黄色成人| 亚洲a在线播放 | 岳狂躁岳丰满少妇大叫 | a一级视频 | 男人操女人免费视频 | av每日更新在线观看 | 日韩天天操 | 三女警花合力承欢猎艳都市h | 91视频h | 天天综合干 | 久久噜噜噜精品国产亚洲综合 | 国产午夜精品福利视频 | 欧美一级片一区二区 |