<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
OVER用於為行定義一個視窗,它對一組值進行操作,不需要使用GROUP BY子句對資料進行分組,能夠在同一行中同時返回基礎行的列和聚合列。
OVER ( [ PARTITION BY column ] [ ORDER BY culumn ] [ROWS|RANGE BETWEEN 邊界規則1 and 邊界規則2])
PARTITION BY 子句進行分組;
ORDER BY 子句進行排序;
ROWS|RANGE 框架是對視窗進行進一步的分割區,框架有兩種範圍限定方式:一種是使用ROWS子句,通過指定當前行之前或之後的固定數目的行來限制分割區中的行數;另一種是RANGE子句,按照排序列的當前值,根據相同值來確定分割區中的行數。
視窗函數OVER()指定一組行,開窗函數計算從視窗函數輸出的結果集中各行的值。
RANGE表示按照值的範圍進行範圍的定義,而ROWS表示按照行的範圍進行範圍的定義;邊界規則的可取值見下表
OVER開窗函數必須與聚合函數或排序函數一起使用,聚合函數一般指SUM(),MAX(),MIN,COUNT(),AVG()等常見函數。排序函數一般指RANK(),ROW_NUMBER(),DENSE_RANK(),NTILE()等。
建立測試表
create table Employee ( ID INT PRIMARY KEY ,Name VARCHAR(20) ,GroupName VARCHAR(20) ,Salary INT ) INSERT into Employee VALUES(1, '小明', '開發部', 8000), (4, '小張', '開發部', 7600), (5, '小白', '開發部', 7000), (8, '小王', '財務部', 5000), (9, null, '財務部', NULL), (15, '小劉', '財務部', 6000), (16, '小高', '行政部', 4500), (18, '小王', '行政部', 4000), (23, '小李', '行政部', 4500), (29, '小吳', '行政部', 4700) ;
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
結果如下:
其中開窗函數的每個含義不同,我們來具體解讀一下:
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進行排序,然後在組內對Salary進行累加處理。
SUM(Salary) OVER (ORDER BY ID)
只對ORDER BY 後的ID內容進行排序,對排完序後的Salary進行累加處理。
SUM(Salary) OVER ()
對Salary進行彙總處理
ROW_NUMBER()
定義:ROW_NUMBER()函數作用就是將SELECT查詢到的資料進行排序,每一條資料加一個序號
select * ,ROW_NUMBER() OVER (PARTITION BY ClassName ORDER BY SCORE DESC) 班內排序 ,ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS 總排序 from Scores ;
RANK()
select ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK] ,* from Scores ; select RANK() OVER (ORDER BY SCORE DESC) AS [RANK] ,* from Scores ;
NTILE()
定義:NTILE(N)函數是將資料分成N塊,然後再新增1~N的序號。
select * ,NTILE(1) OVER (ORDER BY SCORE DESC) AS 分割區後排序 from Scores ; select * ,NTILE(2) OVER (ORDER BY SCORE DESC) AS 分割區後排序 from Scores ; select * ,NTILE(3) OVER (ORDER BY SCORE DESC) AS 分割區後排序 from Scores ;
select * ,SUM(Salary) OVER(PARTITION BY groupname ORDER BY ID ROWS between CURRENT ROW and 5 FOLLOWING) 從當前行開始後5行的和 from Employee
https://www.modb.pro/db/42912
到此這篇關於SQL視窗函數OVER用法的文章就介紹到這了,更多相關SQL視窗函數OVER內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45