自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

4分鐘了解什么是SQL窗口函數(shù)

數(shù)據(jù)庫 SQL Server
你也許很熟悉SQL的簡單查詢,比如使用SELECT FROM WHERE GROUP BY這樣的基礎(chǔ)語句,但是如果你想進(jìn)一步提升自己的SQL技能,你不能不知道窗口函數(shù)(Window Function),又被叫做分析函數(shù)(Analytics Function)。

 你也許很熟悉SQL的簡單查詢,比如使用SELECT FROM WHERE GROUP BY這樣的基礎(chǔ)語句,但是如果你想進(jìn)一步提升自己的SQL技能,你不能不知道窗口函數(shù)(Window Function),又被叫做分析函數(shù)(Analytics Function)。

什么是窗口函數(shù)/分析函數(shù)?

窗口函數(shù)是類似于可以返回聚合值的函數(shù),例如SUM(),COUNT(),MAX()。

但是窗口函數(shù)又與普通的聚合函數(shù)不同,它不會對結(jié)果進(jìn)行分組,使得輸出中的行數(shù)與輸入中的行數(shù)相同。

[[374457]]

 

窗口函數(shù)剖析

一個窗口函數(shù)大概看起來是這樣:

 

  1. SELECT SUM() OVER(PARTITION BY ___ ORDER BY___) FROM Table 

這里有3點(diǎn)需要牢記:

1. 聚合功能:在上述例子中,我們用了SUM(),但是你也可以用COUNT(), AVG()之類的計算功能

2. PARTITION BY:你只需將它看成GROUP BY子句,但是在窗口函數(shù)中,你要寫PARTITION BY

3. ORDER BY:ORDER BY和普通查詢語句中的ORDER BY沒什么不同。注意,輸出的順序要仔細(xì)考慮

 

 

[[374458]]

 

示例:集合函數(shù)VS窗口函數(shù)

假設(shè)我們有如下這個表格:

 

如果要按性別獲取平均GPA,可以使用聚合函數(shù)并運(yùn)行以下查詢:

 

 

  1. SELECT Gender, AVG(GPA) as avg_gpa 
  2. FROM students 
  3. GROUP BY Gender 

結(jié)果如下:

 

下一步是關(guān)鍵!

現(xiàn)在我們想得到如下結(jié)果:

 

我們當(dāng)然可以用我們剛剛提到的聚合函數(shù),然后再將結(jié)果join到初始表,但這需要兩個步驟。

但如果我們使用窗口函數(shù),我們則可以一步到位,并得到相同的結(jié)果:

 

  1. SELECT *, 
  2.   AVG(GPA) OVER (PARTITION BY Gender) as avg_gpa 
  3. FROM table 

通過上面的查詢,我們正在按性別對數(shù)據(jù)進(jìn)行劃分,并計算每種性別的平均GPA。然后,它將創(chuàng)建一個稱為avg_gpa的新列,并為每行附加關(guān)聯(lián)的平均GPA。

窗口函數(shù)的優(yōu)點(diǎn)

 

 

 

簡單

窗口函數(shù)更易于使用。在上面的示例中,與使用聚合函數(shù)然后合并結(jié)果相比,使用窗口函數(shù)僅需要多一行就可以獲得所需要的結(jié)果。

快速

這一點(diǎn)與上一點(diǎn)相關(guān),使用窗口函數(shù)比使用替代方法要快得多。當(dāng)你處理成百上千個千兆字節(jié)的數(shù)據(jù)時,這非常有用。

多功能

性最重要的是,窗口函數(shù)具有多種功能,本文并沒有提及這個功能,比如,包括添加移動平均線,添加行號和滯后數(shù)據(jù),等等。

結(jié)語

讀到這里,你大概對窗口函數(shù)有了初步認(rèn)識。希望本文提及的例子對你理解窗口函數(shù)有幫助??偠灾M愕腟QL可以越來越厲害!

責(zé)任編輯:華軒 來源: MarTechCareer
相關(guān)推薦

2021-01-06 10:33:15

SQL數(shù)據(jù)庫函數(shù)

2009-11-02 18:07:58

Oracle數(shù)據(jù)庫

2021-05-17 20:13:50

數(shù)倉操作型數(shù)據(jù)庫

2020-07-07 07:57:45

數(shù)據(jù)倉庫

2024-05-13 09:28:43

Flink SQL大數(shù)據(jù)

2018-05-06 16:26:03

關(guān)聯(lián)規(guī)則數(shù)據(jù)分析關(guān)聯(lián)規(guī)則推薦

2018-03-12 21:31:24

區(qū)塊鏈

2009-11-05 14:53:54

Visual Stud

2021-10-19 07:27:08

HTTP代理網(wǎng)絡(luò)

2022-02-22 13:20:57

RSA算法加密

2020-10-13 18:22:58

DevOps工具開發(fā)

2021-04-30 16:23:58

WebRTC實(shí)時音頻

2022-12-16 09:55:50

網(wǎng)絡(luò)架構(gòu)OSI

2023-09-07 23:52:50

Flink代碼

2024-12-13 15:29:57

SpringSpringBeanJava

2018-03-12 14:37:50

區(qū)塊鏈比特幣架構(gòu)

2022-07-18 06:16:07

單點(diǎn)登錄系統(tǒng)

2024-06-25 12:25:12

LangChain路由鏈

2018-03-23 11:56:09

相似性推薦推薦算法推薦

2017-07-06 08:12:02

索引查詢SQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號