SQL 窗口函示例數(shù)詳解
1.窗口函數(shù)之排序函數(shù)
RANK, DENSE_RANK, ROW_NUMBER
1.RANK函數(shù)
計(jì)算排序時(shí),如果存在相同位次的記錄,則會(huì)跳過(guò)之后的位次
有 3 條記錄排在第 1 位時(shí): 1 位、1 位、1 位、4 位…
2.DENSE_RANK函數(shù)
同樣是計(jì)算排序,即使存在相同位次的記錄,也不會(huì)跳過(guò)之后的位次
有 3 條記錄排在第 1 位時(shí): 1 位、1 位、1 位、2 位
3.ROW_NUMBER函數(shù)
賦予唯一的連續(xù)位次。
例)有 3 條記錄排在第 1 位時(shí): 1 位、2 位、3 位、4 位
語(yǔ)法<窗口函數(shù)> OVER ([PARTITION BY <列清單>] ORDER BY <排序用列清單>)
根據(jù)分?jǐn)?shù)對(duì)學(xué)生從高到低排名,不對(duì)科目進(jìn)行分組,成績(jī)相同則排名相同并且位次連續(xù)
SELECT student_name, score, DENSE_RANK() OVER(ORDER BY score DESC) AS 'rank' FROM grade;
根據(jù)分?jǐn)?shù)對(duì)同科目的學(xué)生從高到低排名,成績(jī)相同,排名不相同
SELECT student_name, score, ROW_NUMBER() OVER(PARTITION BY course_name ORDER BY score DESC) AS 'rank' FROM grade;
窗口函數(shù)使用場(chǎng)景
1.直接排序:按照某列對(duì)數(shù)據(jù)進(jìn)行排序
2.Top-k:查詢排名TOP-k的數(shù)據(jù)
3.最值問(wèn)題:查詢最大、最多的數(shù)據(jù)
4.輔助列:比如計(jì)算連續(xù)登陸問(wèn)題、用SQL計(jì)算平均數(shù)、眾數(shù)、中位數(shù)(可以參考我之前的視頻)
到此這篇關(guān)于SQL 窗口函數(shù)的文章就介紹到這了,更多相關(guān)SQL 窗口函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL Server誤區(qū)30日談 第20天 破壞日志備份鏈之后,需要一個(gè)完整備份來(lái)重新開(kāi)始日志鏈
事務(wù)日志備份會(huì)備份自上次事務(wù)日志備份以來(lái)所有的事務(wù)日志(如果從來(lái)沒(méi)有過(guò)日志備份的話,那就從上一次完整備份開(kāi)始)。有好幾種類型的操作會(huì)中斷事務(wù)日志的連續(xù)性,也就是說(shuō)除非重新開(kāi)始新的日志鏈,SQL Server無(wú)法再進(jìn)行日志備份2013-01-01SQL語(yǔ)句練習(xí)實(shí)例之一——找出最近的兩次晉升日期與工資額
程序員們?cè)诰帉懸粋€(gè)雇員報(bào)表,他們需要得到每個(gè)雇員當(dāng)前及歷史工資狀態(tài)的信息,以便生成報(bào)表。報(bào)表需要顯示每個(gè)人的晉升日期和工資數(shù)目。2011-10-10SQLServer2008R2版安裝和測(cè)試的實(shí)現(xiàn)
本文主要介紹了在Windows10上安裝和配置SQL?Server?2008R2,內(nèi)容涵蓋了安裝過(guò)程中的注意事項(xiàng),如安裝.NET?Framework?3.5、處理遠(yuǎn)程過(guò)程調(diào)用失敗等常見(jiàn)問(wèn)題,感興趣的可以了解一下2024-12-12SQL Server 2014 數(shù)據(jù)庫(kù)中文版安裝圖文教程
這篇文章主要介紹了SQL Server 2014 數(shù)據(jù)庫(kù)中文版安裝圖文教程,需要的朋友可以參考下2021-05-05SQL Server 2019 密碼修改的實(shí)現(xiàn)步驟
為了保護(hù)數(shù)據(jù)庫(kù)中的數(shù)據(jù),我們經(jīng)常需要定期更改數(shù)據(jù)庫(kù)用戶的密碼,本文主要介紹了SQL Server 2019 密碼修改的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09隱藏在SQLServer 字段中的超詭異字符解決過(guò)程
這套系統(tǒng)做了大半年,這個(gè)導(dǎo)入導(dǎo)出還是問(wèn)題不斷,我負(fù)責(zé)的這塊導(dǎo)入導(dǎo)出就是夾在網(wǎng)絡(luò)版和單機(jī)版系統(tǒng)之間,只要任何一邊對(duì)數(shù)據(jù)庫(kù)做了改動(dòng)這個(gè)導(dǎo)入導(dǎo)出就會(huì)失敗。哎,煩心的事不止這些,最近又遇到了一個(gè)非常奇怪的問(wèn)題。2009-10-10刪除數(shù)據(jù)庫(kù)中重復(fù)數(shù)據(jù)的幾個(gè)方法
刪除數(shù)據(jù)庫(kù)中重復(fù)數(shù)據(jù)的幾個(gè)方法...2006-12-12