欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2022年07月11日 14:09:02   作者:奧卡姆的剃刀  
這篇文章主要介紹了SQL中row_number()?over(partition?by)的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

row_number 語法

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

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

原始表score

s_id 表是學生編號,c_id表是課程編號,s_score 表是學生對應(yīng)的課程分數(shù)

在這里插入圖片描述

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

----因為是每門課程的結(jié)果,并且要排序,所以用row_number

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

返回結(jié)果:

在這里插入圖片描述

2:進一步要求:得出每門課程的學生成績,并且按照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ù)計算的值就表示每組內(nèi)部排序后的順序編號,可以用于去重復值

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

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

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

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

如果只需查詢出不重復的姓名即可,則可使用如下的語句, 由查詢結(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 ;

分頁

--先做一個子查詢,先按id1進行排序,排序完后,給每條記錄進行了編號

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

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

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL?數(shù)據(jù)備份和數(shù)據(jù)恢復的實現(xiàn)

    MySQL?數(shù)據(jù)備份和數(shù)據(jù)恢復的實現(xiàn)

    數(shù)據(jù)恢復的過程包括將備份文件導入到數(shù)據(jù)庫中、重建索引、應(yīng)用日志等,本文主要介紹了MySQL數(shù)據(jù)備份和數(shù)據(jù)恢復的實現(xiàn),感興趣的可以了解一下
    2023-08-08
  • 阿里面試MySQL死鎖問題的處理

    阿里面試MySQL死鎖問題的處理

    這篇文章主要介紹了在阿里面試中的一個問題MySQL死鎖問題的處理回答,對常見的死鎖案例進行相關(guān)分析與探討,以及如何去盡可能避免死鎖給出一些建議
    2022-03-03
  • 詳解MySQL存儲過程參數(shù)有三種類型(in、out、inout)

    詳解MySQL存儲過程參數(shù)有三種類型(in、out、inout)

    MySQL 存儲過程參數(shù)有三種類型:in、out、inout。它們各有什么作用和特點呢
    2012-07-07
  • MySQL分頁分析原理及提高效率

    MySQL分頁分析原理及提高效率

    這篇文章主要介紹了MySQL分頁分析原理及提高效率的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • MySQL中如何計算同比和環(huán)比

    MySQL中如何計算同比和環(huán)比

    在工作的過程中,經(jīng)常會使用到環(huán)比、同比,下面這篇文章主要給大家介紹了關(guān)于MySQL中如何計算同比和環(huán)比的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • MYSQL中常用的強制性操作(例如強制索引)

    MYSQL中常用的強制性操作(例如強制索引)

    對于經(jīng)常使用oracle的朋友可能知道,oracle的hint功能種類很多,對于優(yōu)化sql語句提供了很多方法。同樣,在mysql里,也有類似的hint功能。
    2014-05-05
  • mysql密碼中有特殊字符&在命令行下登錄的操作

    mysql密碼中有特殊字符&在命令行下登錄的操作

    這篇文章主要介紹了mysql密碼中有特殊字符&在命令行下登錄的操作,具有很好的參考價值希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • mysql中操作表常用的sql總結(jié)

    mysql中操作表常用的sql總結(jié)

    這篇文章主要給大家介紹了mysql中操作表常用的sql的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • mysql limit分頁優(yōu)化詳細介紹

    mysql limit分頁優(yōu)化詳細介紹

    MySQL最常用也最需要優(yōu)化的就是limit,MySQL的limit給分頁帶來了極大的方便,但數(shù)據(jù)量一大的時候,limit的性能就急劇下降,需要的朋友可以參考下
    2016-12-12
  • MySQL運行在docker容器性能損失解析

    MySQL運行在docker容器性能損失解析

    這篇文章主要為大家介紹了MySQL運行在docker容器中的性能損失解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11

最新評論