资料分析师的SQL要学到什么程度?

數據分析那些事
5 min readSep 13, 2021

--

談談 T-SQL 中的 Window Function

常有朋友問,資料分析師的SQL功底該學到什麼程度。今天就先談談 T-SQL 中的 Window Function.

Window Function 包含了 4 個大類。分別是:

1 — Rank Function
2 — Aggregate Function
3 — Offset Function
4 — Distribution Function.

1 — Rank Function 平常用到最多

1.1 Rank() Over()
1.2 Row_Number() Over()
1.3 Dense_Rank() Over()
1.4 NTILE(N) Over()

這四個函式,要注意的地方有兩點:

a. Rank() Over() 與 Row_Number() Over() :

兩者唯一的區別,就在於Row_Number() Over() 真正實現了相同條件的兩條或者多條記錄是用唯一值來區別的。

b. Rank() Over() 與 Dense_Rank() Over() :

這兩者的區別,在於他們對位於相同排名之後的名次,是接著相同排名的連續數(Dense_Rank) 還是相隔 N 個相同記錄個數之後的連續數(Rank)。

所以 Dense_Rank 出來的結果都是連續數字,而 非Dense_Rank 出來的結果有可能有跳格數。

c. 除了有用法上的區別外,順帶說說分頁的實現:

第一種,我們平常用 Row_Number() 加 Top (N) 來實現 :

第二種,SQL Server 2012 之後的新功能:

按照量的大小倒序排,取第 2000 條後的記錄中前 100 條。

2 — Aggregate Function. 聚合資料

2.1 — Sum() Over()
2.2 — Count() Over()
2.3 — AVG() Over()
2.4 — MIN() Over()
2.5 — MAX() Over()

在使用 Aggregation 函式的時候,唯一要注意的地方就是 Order 子句。

Over::

::視窗中的視窗

舉一個例子:

統計了截止到目前為止,每一天的累計總量

3 — Offset Function:定位記錄

3.1 Lead()
3.2 LAG()
3.3 First_Value()
3.4 Last_Value()
3.5 Nth_Value()

這一類比較好理解,根據當前的記錄,獲取前後 N 條資料。

4 — Distribution Function: 分佈函式

4.1- PERCENT_RANK()
4.2 — CUME_DIST()
4.3 — PERCENT_COUNT()-
4.4 — PERCENT_DISC()

這一類應用,到目前為止,未用過。適用於財會類的統計。

文章轉載自:微信公眾號「有关SQL」

文章链接:https://mp.weixin.qq.com/s/vnmeSZWEKThfOmHsusDGjA

---------------------------------------------------------------------------------------------------------

我是「數據分析那些事」。常年分享數據分析乾貨,不定期分享好用的職場技能工具。各位也可以關注我的Facebook,按讚我的臉書並私訊「10」,送你十週入門數據分析電子書唷!期待你與我互動起來~

文章推選

三週一套報表開發系統,原來Excel的頂級替代品是它

詳細解密IT行業的5個崗位,最賺錢的是哪個?

10張架構圖包含Python所有方向的學習路線,你們要的體系全在這

--

--

數據分析那些事

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/