偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

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

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

[[374457]]

 

窗口函數(shù)剖析

一個(gè)窗口函數(shù)大概看起來(lái)是這樣:

 

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

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

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

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

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

 

 

[[374458]]

 

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

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

 

如果要按性別獲取平均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到初始表,但這需要兩個(gè)步驟。

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

 

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

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

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

 

 

 

簡(jiǎn)單

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

快速

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

多功能

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

結(jié)語(yǔ)

讀到這里,你大概對(duì)窗口函數(shù)有了初步認(rèn)識(shí)。希望本文提及的例子對(duì)你理解窗口函數(shù)有幫助。總而言之,希望你的SQL可以越來(lái)越厲害!

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

2021-01-06 10:33:15

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

2009-11-02 18:07:58

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

2021-05-17 20:13:50

數(shù)倉(cāng)操作型數(shù)據(jù)庫(kù)

2024-05-13 09:28:43

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

2020-07-07 07:57:45

數(shù)據(jù)倉(cāng)庫(kù)

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ò)

2020-10-13 18:22:58

DevOps工具開(kāi)發(fā)

2021-04-30 16:23:58

WebRTC實(shí)時(shí)音頻

2023-09-07 23:52:50

Flink代碼

2022-12-16 09:55:50

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

2022-02-22 13:20:57

RSA算法加密

2024-12-13 15:29:57

SpringSpringBeanJava

2017-07-06 08:12:02

索引查詢SQL

2018-03-12 14:37:50

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

2018-03-23 11:56:09

相似性推薦推薦算法推薦

2024-06-25 12:25:12

LangChain路由鏈

2022-07-18 06:16:07

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

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