SQL視窗函式

2021-10-12 19:43:07 字數 1374 閱讀 6835

一、視窗函式應用場景:分組處理資料

二、視窗函式基本語法

《視窗函式》

over

(partition

by《用於分組的欄位名》

order

by《用於排序的欄位名》

)

上面**含義為:

首先將資料表根據《用於分組的欄位名》分段,並且根據《用於排序的欄位名》排序,而後對經過這兩步處理的資料表執行《視窗函式》

注:partition bygroup by的區別:group by改變了表的行數,經過分組後每一組的資料成為一行,而partition by不改變表的行數。

三、常用視窗函式及使用方法

視窗函式可以分為兩類:

1.專用視窗函式,如rank, dense_rank, row_number等

2.聚合函式,如max, min, sum等

1.三種排序函式:rank()、dense_rank()、row_number()

rank(

)over

(partition

by《分割槽字段》

order

by《排序字段》

)dense_rank(

)over

(partition

by《分割槽字段》

order

by《排序字段》

)row_number(

)over

(partition

by《分割槽字段》

order

by《排序字段》

)

三種函式效果區分:

rank()、dense_rank()、row_number()函式都會對各分區內的資料依據排序字段進行排序,row_number()會賦予排序後的資料不同的行號,但rank()與dense_rank()會給相同排名的記錄相同的序號,dense_rank()賦予使下乙個排名的記錄順延的序號,而rank()則會跳過這幾個序號。

舉例如下:如果按照成績排序後資料為下表:

idscore199

299399

498rank()、dense_rank()、row_number()處理的結果分別如下: id

scorerk1

991299

13991

4984

idscorerk1

991299

13991

4982

idscorerk1

991299

23993

4984

SQL視窗函式 排序函式

1.排序函式用途 對某一列內容的數值大小,新建一列按1,2,3.排序。2.排序函式的完整表示式 row number over partition by 分組字段 order by 需排序字段 desc asc partition by 分組字段 進行分組排序,比如按照性別對身高進行排序時,女生按照...

SQL知識之視窗函式

3 排序視窗函式 4 切分視窗函式 5 偏移視窗函式 6 first value last value 前言 視窗函式屬於sql的高階查詢功能,有些資料庫的低版本可能還不支援,如mysql5.7版本暫不支援,sql server是支援的。1 視窗函式的簡單介紹 2 累計計算視窗函式 2.1 普通累計...

SQL面試題 視窗函式

問題 按日展示,月度累計結果 資料表clsfd weekly bn usv watch sum count name 的求和是針對後面over 視窗的求和,over中partition by metric name,month clsfd sum dt 針對metric name這一組按照月份排序,...