人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

SQL中row_number()?over(partition?by)的用法說明

發(fā)布日期:2022-07-15 19:52 | 文章來源:gibhub

row_number 語法

ROW_NUMBER()函數(shù)將針對SELECT語句返回的每一行,從1開始編號,賦予其連續(xù)的編號。在查詢時(shí)應(yīng)用了一個(gè)排序標(biāo)準(zhǔn)后,只有通過編號才能夠保證其順序是一致的,當(dāng)使用ROW_NUMBER函數(shù)時(shí),也需要專門一列用于預(yù)先排序以便于進(jìn)行編號

partition by關(guān)鍵字是分析性函數(shù)的一部分,它和聚合函數(shù)不同的地方在于它能返回一個(gè)分組中的多條記錄,而聚合函數(shù)一般只有一條反映統(tǒng)計(jì)值的記錄,partition by用于給結(jié)果集分組,如果沒有指定那么它把整個(gè)結(jié)果集作為一個(gè)分組,分區(qū)函數(shù)一般與排名函數(shù)一起使用。

原始表score

s_id 表是學(xué)生編號,c_id表是課程編號,s_score 表是學(xué)生對應(yīng)的課程分?jǐn)?shù)

1.要求:得出每門課程的學(xué)生成績排序(升序)

----因?yàn)槭敲块T課程的結(jié)果,并且要排序,所以用row_number

select * ,row_number() over (partition by c_id order by s_score) from score;

返回結(jié)果:

2:進(jìn)一步要求:得出每門課程的學(xué)生成績,并且按照70分作為分割線排序—即低于70分的排序,高于70分的排序

select * ,row_number() over (partition by c_id,(case when s_score>70 then 1 else 0 end) order by s_score) from score;

返回結(jié)果:

row_number() over(partition by 列名1 order by 列名2 desc)的使用

表示根據(jù) 列名1 分組,然后在分組內(nèi)部根據(jù) 列名2 排序,而此函數(shù)計(jì)算的值就表示每組內(nèi)部排序后的順序編號,可以用于去重復(fù)值

與rownum的區(qū)別在于:使用rownum進(jìn)行排序的時(shí)候是先對結(jié)果集加入偽列rownum然后再進(jìn)行排序,而此函數(shù)在包含排序從句后是先排序再計(jì)算行號碼.

---查詢所有姓名,如果同名,則按年齡降序

SELECT?name,age,detail,ROW_NUMBER()?OVER(PARTITION?BY?name?ORDER?BY?age?DESC)?FROM?TEST_Y; 

通過上面的語句可知,是按照name字段分組,按age字段排序的。

如果只需查詢出不重復(fù)的姓名即可,則可使用如下的語句, 由查詢結(jié)果可知,姓名相同年齡小的數(shù)據(jù)被過濾掉了;

SELECT ? * ? FROM ? ( SELECT ? name ,age, detail ,ROW_NUMBER() ? OVER ( ? PARTITION ? BY ? name? ORDER ? BY ? age? DESC )RN ? FROM ? TEST_Y ) WHERE ? RN= ? 1 ;

分頁

--先做一個(gè)子查詢,先按id1進(jìn)行排序,排序完后,給每條記錄進(jìn)行了編號

--然后再將子查詢做為一張表,就可以進(jìn)行分頁了

select *
? from (select t.*,row_number() over(order by t.id1 asc) as rn from demo t) d
? where d.rn between 1 and 2

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持本站。

國外穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部