SQL 窗口函示例數(shù)詳解
1.窗口函數(shù)之排序函數(shù)
RANK, DENSE_RANK, ROW_NUMBER
1.RANK函數(shù)
計算排序時,如果存在相同位次的記錄,則會跳過之后的位次
有 3 條記錄排在第 1 位時: 1 位、1 位、1 位、4 位…
2.DENSE_RANK函數(shù)
同樣是計算排序,即使存在相同位次的記錄,也不會跳過之后的位次
有 3 條記錄排在第 1 位時: 1 位、1 位、1 位、2 位
3.ROW_NUMBER函數(shù)
賦予唯一的連續(xù)位次。
例)有 3 條記錄排在第 1 位時: 1 位、2 位、3 位、4 位
語法<窗口函數(shù)> OVER ([PARTITION BY <列清單>] ORDER BY <排序用列清單>)

根據(jù)分數(shù)對學生從高到低排名,不對科目進行分組,成績相同則排名相同并且位次連續(xù)
SELECT student_name, score, DENSE_RANK() OVER(ORDER BY score DESC) AS 'rank' FROM grade;
根據(jù)分數(shù)對同科目的學生從高到低排名,成績相同,排名不相同
SELECT student_name, score, ROW_NUMBER() OVER(PARTITION BY course_name ORDER BY score DESC) AS 'rank' FROM grade;
窗口函數(shù)使用場景
1.直接排序:按照某列對數(shù)據(jù)進行排序
2.Top-k:查詢排名TOP-k的數(shù)據(jù)
3.最值問題:查詢最大、最多的數(shù)據(jù)
4.輔助列:比如計算連續(xù)登陸問題、用SQL計算平均數(shù)、眾數(shù)、中位數(shù)(可以參考我之前的視頻)
到此這篇關于SQL 窗口函數(shù)的文章就介紹到這了,更多相關SQL 窗口函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SQL SERVER備份數(shù)據(jù)庫存儲過程的方法
這篇文章主要介紹了SQL SERVER備份數(shù)據(jù)庫存儲過程的方法,需要的朋友可以參考下2015-10-10
hive中將string數(shù)據(jù)轉為bigint的操作
這篇文章主要介紹了hive中將string數(shù)據(jù)轉為bigint的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
sql server性能調(diào)優(yōu) I/O開銷的深入解析
這篇文章主要給大家介紹了關于sql server性能調(diào)優(yōu) I/O開銷的相關資料,文中通過示例代碼以及圖片介紹的非常詳細,對大家的理解和學習具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-07-07

