久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

一文搞懂SQL中的開窗函數(shù)

本篇文章給大家?guī)砹岁P(guān)于SQL server的相關(guān)知識,開窗函數(shù)也叫分析函數(shù)有兩類,一類是聚合開窗函數(shù),一類是排序開窗函數(shù),下面這篇文章主要給大家介紹了關(guān)于SQL中開窗函數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下。

一文搞懂SQL中的開窗函數(shù)

推薦學(xué)習(xí):《SQL教程》

OVER的定義

OVER用于為行定義一個窗口,它對一組值進行操作,不需要使用GROUP BY子句對數(shù)據(jù)進行分組,能夠在同一行中同時返回基礎(chǔ)行的列和聚合列。

OVER的語法

OVER ( [ PARTITION BY column ] [ ORDER BY culumn ] )

PARTITION BY 子句進行分組;

ORDER BY 子句進行排序。

窗口函數(shù)OVER()指定一組行,開窗函數(shù)計算從窗口函數(shù)輸出的結(jié)果集中各行的值。

開窗函數(shù)不需要使用GROUP BY就可以對數(shù)據(jù)進行分組,還可以同時返回基礎(chǔ)行的列和聚合列。

OVER的用法

OVER開窗函數(shù)必須與聚合函數(shù)或排序函數(shù)一起使用,聚合函數(shù)一般指SUM(),MAX(),MIN,COUNT(),AVG()等常見函數(shù)。排序函數(shù)一般指RANK(),ROW_NUMBER(),DENSE_RANK(),NTILE()等。

OVER在聚合函數(shù)中使用的示例

我們以SUM和COUNT函數(shù)作為示例來給大家演示。

--建立測試表和測試數(shù)據(jù) CREATE TABLE Employee ( ID INT  PRIMARY KEY, Name VARCHAR(20), GroupName VARCHAR(20), Salary INT ) INSERT INTO  Employee VALUES(1,'小明','開發(fā)部',8000),       (4,'小張','開發(fā)部',7600),       (5,'小白','開發(fā)部',7000),       (8,'小王','財務(wù)部',5000),       (9, null,'財務(wù)部',NULL),       (15,'小劉','財務(wù)部',6000),       (16,'小高','行政部',4500),       (18,'小王','行政部',4000),       (23,'小李','行政部',4500),       (29,'小吳','行政部',4700);

SUM后的開窗函數(shù)

SELECT *,      SUM(Salary) OVER(PARTITION BY Groupname) 每個組的總工資,      SUM(Salary) OVER(PARTITION BY groupname ORDER BY ID) 每個組的累計總工資,      SUM(Salary) OVER(ORDER BY ID) 累計工資,      SUM(Salary) OVER() 總工資 from Employee

(提示:可以左右滑動代碼)

結(jié)果如下:

一文搞懂SQL中的開窗函數(shù)

其中開窗函數(shù)的每個含義不同,我們來具體解讀一下:

SUM(Salary) OVER (PARTITION BY Groupname)

只對PARTITION BY后面的列Groupname進行分組,分組后求解Salary的和。

SUM(Salary) OVER (PARTITION BY Groupname ORDER BY ID)

對PARTITION BY后面的列Groupname進行分組,然后按ORDER BY 后的ID進行排序,然后在組內(nèi)對Salary進行累加處理。

SUM(Salary) OVER (ORDER BY ID)

只對ORDER BY 后的ID內(nèi)容進行排序,對排完序后的Salary進行累加處理。

SUM(Salary) OVER ()

對Salary進行匯總處理

COUNT后的開窗函數(shù)

SELECT *,        COUNT(*) OVER(PARTITION BY Groupname ) 每個組的個數(shù),        COUNT(*) OVER(PARTITION BY Groupname ORDER BY ID) 每個組的累積個數(shù),        COUNT(*) OVER(ORDER BY ID) 累積個數(shù) ,        COUNT(*) OVER() 總個數(shù) from Employee

返回的結(jié)果如下圖:

一文搞懂SQL中的開窗函數(shù)

后面的每個開窗函數(shù)就不再一一解讀了,可以對照上面SUM后的開窗函數(shù)進行一一對照。

OVER在排序函數(shù)中使用的示例

我們對4個排序函數(shù)一一演示

--先建立測試表和測試數(shù)據(jù) WITH t AS (SELECT 1 StuID,'一班' ClassName,70 Score UNION ALL SELECT 2,'一班',85 UNION ALL SELECT 3,'一班',85 UNION ALL SELECT 4,'二班',80 UNION ALL SELECT 5,'二班',74 UNION ALL SELECT 6,'二班',80 ) SELECT * INTO Scores FROM t; SELECT * FROM Scores

ROW_NUMBER()

定義:ROW_NUMBER()函數(shù)作用就是將SELECT查詢到的數(shù)據(jù)進行排序,每一條數(shù)據(jù)加一個序號,他不能用做于學(xué)生成績的排名,一般多用于分頁查詢,比如查詢前10個 查詢10-100個學(xué)生。ROW_NUMBER()必須與ORDER BY一起使用,否則會報錯。

對學(xué)生成績排序

SELECT *, ROW_NUMBER() OVER (PARTITION BY ClassName ORDER BY SCORE DESC) 班內(nèi)排序, ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS 總排序 FROM Scores;

結(jié)果如下:

一文搞懂SQL中的開窗函數(shù)

這里的PARTITION BY和ORDER BY的作用與我們在上面看到的聚合函數(shù)的作用一樣,都是用來進行分組和排序使用的。

此外ROW_NUMBER()函數(shù)還可以取指定順序的數(shù)據(jù)。

SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS 總排序 FROM Scores ) t WHERE t.總排序=2;

結(jié)果如下:

一文搞懂SQL中的開窗函數(shù)

RANK()

定義:RANK()函數(shù),顧名思義排名函數(shù),可以對某一個字段進行排名,這里和ROW_NUMBER()有什么不一樣呢?ROW_NUMBER()是排序,當存在相同成績的學(xué)生時,ROW_NUMBER()會依次進行排序,他們序號不相同,而Rank()則不一樣。如果出現(xiàn)相同的,他們的排名是一樣的。下面看例子:

示例

SELECT ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;   SELECT RANK() OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;

結(jié)果:

一文搞懂SQL中的開窗函數(shù)

一文搞懂SQL中的開窗函數(shù)

其中上圖是ROW_NUMBER()的結(jié)果,下圖是RANK()的結(jié)果。當出現(xiàn)兩個學(xué)生成績相同是里面出現(xiàn)變化。RANK()是1-1-3-3-5-6,而ROW_NUMBER()則還是1-2-3-4-5-6,這就是RANK()和ROW_NUMBER()的區(qū)別了。

DENSE_RANK()

定義:DENSE_RANK()函數(shù)也是排名函數(shù),和RANK()功能相似,也是對字段進行排名,那它和RANK()到底有什么不同那?特別是對于有成績相同的情況,DENSE_RANK()排名是連續(xù)的,RANK()是跳躍的排名,一般情況下用的排名函數(shù)就是RANK() 我們看例子:

示例

SELECT  RANK() OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;   SELECT  DENSE_RANK() OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;

結(jié)果如下:

一文搞懂SQL中的開窗函數(shù)

一文搞懂SQL中的開窗函數(shù)

上面是RANK()的結(jié)果,下面是DENSE_RANK()的結(jié)果

NTILE()

定義:NTILE()函數(shù)是將有序分區(qū)中的行分發(fā)到指定數(shù)目的組中,各個組有編號,編號從1開始,就像我們說的'分區(qū)'一樣 ,分為幾個區(qū),一個區(qū)會有多少個。

SELECT *,NTILE(1) OVER (ORDER BY SCORE DESC) AS 分區(qū)后排序 FROM Scores; SELECT *,NTILE(2) OVER (ORDER BY SCORE DESC) AS 分區(qū)后排序 FROM Scores; SELECT *,NTILE(3) OVER (ORDER BY SCORE DESC) AS 分區(qū)后排序 FROM Scores;

結(jié)果如下:

一文搞懂SQL中的開窗函數(shù)

一文搞懂SQL中的開窗函數(shù)

一文搞懂SQL中的開窗函數(shù)

就是將查詢出來的記錄根據(jù)NTILE函數(shù)里的參數(shù)進行平分分區(qū)。

總結(jié)

OVER開窗函數(shù)是我們工作中經(jīng)常要使用到的,特別是在做數(shù)據(jù)分析計算的時候,經(jīng)常要對數(shù)據(jù)進行分組排序。上面我們額外介紹了聚合函數(shù)和排序函數(shù)的與OVER結(jié)合的使用方法,此外還有很多與OVER一起使用的函數(shù),比如LEAD函數(shù),LAG函數(shù),STRING_AGG函數(shù)等等都會使用到開窗函數(shù)OVER,其使用方法也要務(wù)必掌握。

推薦學(xué)習(xí):《SQL教程》

VIP推薦:共22門課程,總價3725元,開通VIP會員免費

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
成人av三级| 国产亚洲一区二区三区不卡| 麻豆精品在线视频| 国产精品免费99久久久| 日韩精品免费视频人成| 日韩在线视频一区二区三区| 91精品美女| 麻豆精品在线| 久久精品一本| 91精品国产调教在线观看 | 日本а中文在线天堂| 日韩欧美精品综合| 精品一区在线| 日韩中文av| 国产精品夜夜夜| av资源中文在线| 国产高清久久| 婷婷综合福利| 久久一区精品| 黄色成人精品网站| 日韩国产欧美三级| 国产盗摄——sm在线视频| 国产99亚洲| 中文不卡在线| 国产成人精品一区二区三区在线| 91精品亚洲| 日本精品久久| 国产91一区| 国产精品亲子伦av一区二区三区| 亚洲精品国产嫩草在线观看 | 在线精品亚洲欧美日韩国产| 久久高清精品| 日韩va欧美va亚洲va久久| 国内精品伊人| 蜜臀av在线播放一区二区三区| 国产精品nxnn| 亚洲二区免费| 国产精品玖玖玖在线资源| 日韩三区免费| 日韩av午夜在线观看| 日韩久久精品网| 亚洲人成在线网站| 国产日韩高清一区二区三区在线| 欧美手机在线| 国产探花一区| 亚洲一区观看| 日韩理论片av| 欧美国产专区| 亚洲精品人人| 亚洲激情中文在线| 精品精品久久| 日韩av成人高清| 国产精品av一区二区| 免费在线播放第一区高清av| 国产精品社区| 欧美二三四区| 欧美激情网址| 亚洲精品大片| 亚洲激情精品| 超碰在线99| 国产精品久久乐| 在线国产精品一区| 欧美福利一区| 精品丝袜在线| 国产成人精品一区二区三区在线| 亚洲精品伊人| 亚洲黄色在线| 99国产精品免费视频观看| 久久wwww| 国产亚洲精品精品国产亚洲综合| 免费在线观看视频一区| 国内精品福利| 理论片午夜视频在线观看| 国产探花一区| 亚洲精品裸体| 日韩一区欧美二区| aⅴ色国产欧美| 久久蜜桃资源一区二区老牛| 狠狠久久伊人中文字幕| 国产精品一区二区av交换| 亚洲精品系列| 伊人www22综合色| 亚洲一区不卡| 亚洲欧美视频一区二区三区| 婷婷六月综合| 五月天综合网站| 美女网站一区| 欧美日韩日本国产亚洲在线| 99精品在线观看| 国产一区2区在线观看| 国产精品欧美大片| 欧美日韩xxxx| 美女久久久精品| 欧美激情福利| 国产精品久久久久77777丨 | 免费日韩视频| 乱人伦精品视频在线观看| 在线亚洲成人| 美女网站久久| 日韩在线视频一区二区三区| 日韩精品亚洲aⅴ在线影院| 亚洲专区视频| 四虎精品一区二区免费| 亚洲永久精品唐人导航网址| 亚洲一区av| 国产日韩欧美中文在线| 老司机精品视频在线播放| 国产欧美日韩免费观看| 国产精品入口久久| 国产一区二区三区国产精品| av中文字幕在线观看第一页 | 精品国产精品国产偷麻豆| 给我免费播放日韩视频| 91精品一区二区三区综合| 精品中文字幕一区二区三区av| 久久视频精品| 久久成人一区| 国产日韩欧美三区| 成人在线黄色| 伊人精品一区| 伊人久久大香伊蕉在人线观看热v| 日韩高清中文字幕一区| 精品国内亚洲2022精品成人| 国产资源在线观看入口av| 999久久久精品国产| 免费观看久久久4p| 久久99偷拍| 久久免费国产| 亚洲aⅴ网站| 精品资源在线| 亚洲国产成人精品女人| 在线观看视频免费一区二区三区| 国产精品免费99久久久| 日韩成人高清| 亚洲一区二区日韩| 欧美国产视频| 日韩中文视频| 亚洲精品观看| 日韩成人综合| 蜜桃av一区二区在线观看| 国产视频一区二区在线播放| 日韩中文欧美| 综合日韩在线| 日本不卡视频在线观看 | 中文字幕一区二区三区日韩精品| 国产日韩欧美一区二区三区| 日韩久久一区二区三区| 免费人成黄页网站在线一区二区| 国产精品xvideos88| 久久久久久美女精品| 日韩黄色av| 激情婷婷综合| 久久一区亚洲| 亚洲欧美专区| 日韩欧美一区二区三区在线视频| 丝袜美腿亚洲一区| 国产一区二区精品福利地址| 免费视频一区二区| 麻豆91在线播放| 天堂成人国产精品一区| 久久男人av| 亚洲最新av| 亚洲成人精品| 欧美激情麻豆| 日韩在线网址| 女同性一区二区三区人了人一| 久久不卡国产精品一区二区| 亚洲专区欧美专区| 高清日韩欧美| 国产亚洲精aa在线看| 亚洲欧美日韩国产一区| 亚洲黄色免费av| 国产欧美另类| 亚洲激情中文| 粉嫩av一区二区三区四区五区| 综合国产精品| 亚洲午夜视频| 国产在视频一区二区三区吞精| 视频一区欧美日韩| a日韩av网址| 麻豆久久久久久久| 日韩va亚洲va欧美va久久| 91久久中文| 99精品在线| 日韩不卡视频在线观看| 精品国产午夜肉伦伦影院| 日韩欧美中文在线观看| 欧美日韩视频| 色偷偷色偷偷色偷偷在线视频| 日本不卡一区二区| 在线免费观看亚洲| 视频一区在线播放| 西西人体一区二区| 亚洲二区免费| 久久精品卡一| 欧美精品高清| 激情亚洲影院在线观看| 日韩免费福利视频| 日韩电影免费网站| 国产不卡精品|