亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

SQLServer三種開窗函數詳細用法

瀏覽:4日期:2023-09-30 21:03:42
目錄一,開窗函數的語法二,從聚合開窗函數sum(score) over(partition by name )講起三,開窗函數之first_value,last_value,lead,lag四,排名開窗函數ROW_NUMBER、DENSE_RANK、RANK一,開窗函數的語法

開窗函數的語法為:over(partition by 列名1 order by 列名2 ),括號中的兩個關鍵詞partition by 和order by 可以只出現一個。over() 前面是一個函數,如果是聚合函數,那么order by 不能一起使用。

二,從聚合開窗函數sum(score) over(partition by name )講起

實不相瞞我看一眼就會了(假的,其實這種又臭又長的字實在懶得看)

sum(score) over(partition by name )sum()是聚合函數,其實我聚合函數還沒學明白,當 sum()函數 后面跟上 over()以后,由sum聚合函數就成為了開窗函數。over() 括號里面就是定義窗口的內容了,partition 是分區,分組的意思。partition by 就是根據某個字段分組。所以sum(score) over(partition by name ) ,就是先根據 name 分組(如圖),當前面加了sum(score)后就把根據name分組后的,每個(組)窗口里面的字段 score進行求和操作。

select *,sum(score) over(partition by name) sum窗口函數舉例from kchs-- 為了簡單就只有兩個字段,name和score

聚合函數同樣需要對數據進行排序,但不會顯示排名結果。會將當前名次的數據 與 排在這之前的所有數據 依次做相應的計算。

執行語句:

select *,sum(score) over (order by id) as 累加求和from kchs

拓展一下:一,很多聚合函數都可以用作窗口函數的運算,如SUM、AVG、MAX、MIN、COUNT。二,和gropu by 不同的是窗口函數會生成多行,而不是想group by 一樣只有一行

三,開窗函數之first_value,last_value,lead,lag

first_value:是在窗口里面取到第一個值

first_value(score) over( partition by name)as first_score ,根據name分區(組),取score列的第一個值

last_value:是在窗口里面取到最后一個值

last_value(score) over(partition by name) as last_score--根據name分區(組),取score列的最后一個值

lead 是取當前行的上 N 條數據,并且可以設置默認值

lead(score,1,0) over(partition by name ) as lead_score--根據name分區(組),score列當前行的上面N行,,如果沒有就為默認值0

lag 是取當前行的下 N 條數據,并且可以設置默認值

lag(score,1,0) over(partition by name ) as lag_score --根據name分區(組),score列當前行的下面N行,如果沒有就為默認值0

四,排名開窗函數ROW_NUMBER、DENSE_RANK、RANK

row_number ()是為每組的行設置一個連續的遞增的數字(123456)

ROW_NUMBER() over( partition by name order by score asc)as ROW_NUMBER_score

rank()是排名,也為每一組的行生成一個序號,如果有相同的值會生成相同的序號,并且接下來的序號是不連序的。例如:有三個人并列第一名,第四名序號為四(111456)

rank() over(partition by name order by score asc) as RANK_score

DENSE_RANK()和RANK()類似,不同的是如果有相同的序號,那么接下來的序號不會間斷。例如:有三個人并列第一,第四名序號為2(111234)

DENSE_RANK() over(partition by name order by score asc) as DENSE_RANK_score

注意:一,排名開窗函數可以單獨使用ORDER BY 語句,也可以和PARTITION BY同時使用。二,ORDER BY 指定排名開窗函數的順序,在排名開窗函數中必須使用ORDER BY語句。三,PARTITION BY用于將結果集進行分組,開窗函數應用于每一組。

到此這篇關于SQLServer三種開窗函數詳細用法的文章就介紹到這了,更多相關SQLServer 開窗函數內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MsSQL 數據庫
相關文章:
主站蜘蛛池模板: 免费影院在线观看 | 国产的一级毛片完整 | 欧美亚洲国产一区二区三区 | 一级做a免费视频观看网站 一级做a爰毛片 | 人与牲动交bbbbxxxx | 中文字幕亚洲另类天堂 | 久久鸭综合久久国产 | 国内精品视频成人一区二区 | 欧美日韩在线播一区二区三区 | 一级欧美毛片成人 | 久久久性视频 | 欧美性生大片免费观看 | 久久久久久99 | 精品国产免费观看一区高清 | 欧美亚洲国产精品久久蜜芽 | 日本一级毛片免费播 | 欧美一区二区三区在线观看 | 一本大道香蕉中文日本不卡高清二区 | 不卡一区二区在线观看 | 亚洲国产精品综合欧美 | 国产不卡在线播放 | 国产精品4p露脸在线播放 | 一区二区三区视频在线播放 | 国产三级成人 | 一区二区三区视频观看 | 国产一级做a爱免费视频 | 免费的污污网站 | 日韩毛片在线播放 | 国产高清在线精品一区αpp | 亚洲国产精品自产在线播放 | 热99re久久精品天堂vr | 超91精品手机国产在线 | 日本一级片在线播放 | 成年人在线播放视频 | 日产一区二区三区精品视频 | 国产成人精品实拍在线 | 久草热视频在线 | 国产一级视频在线观看网站 | 小明成人永久视频在线观看 | 视频成人永久免费视频 | 国产精品日日摸夜夜添夜夜添1 |