以下列出常用分析函數列表,分析函數可簡化過去許多需使用多組自我連結複雜查詢語法,達成於一列(Row)上同時取得原始資料(非彙總)及彙總運算結果,如查詢一段時間之股價資料(非彙總)及5日、10日均線(彙總)之需求。傳統彙總函數使用GROUP BY進行分組,每一組群將傳回一筆統計數值,而分析函數則採用PARTITION BY為分組依據,則於每一資料列中傳回一統計值,兩者差別比較整理如下,以供應用參考。
彙總函數(Aggegate)
|
分析函數(Analytic)
|
|
語法
|
常搭配GROUP BY子句
|
OVER關鍵字
|
輸出
|
將多筆彙總成一筆
|
仍為原資料集
|
表中依其功能進行分類類理並列出其版本,後續文章將逐一整理說明。表中依其功能進行分類類理並列出其版本,後續文章將逐一整理說明。
類別
|
功能
|
函數
|
ORACLE
|
MSSQL
|
序號
|
連續流水序號
|
8i
|
2005
|
|
同名跳號序號
|
8i
|
2005
|
||
同名不跳號流水序號
|
8i
|
2005
|
||
前/後N筆料
|
相對前第N筆料
|
8i
|
2012
|
|
相對後第N筆料
|
8i
|
2012
|
||
第N筆資料
|
區間內第1筆料
|
FIRST_VALUE
|
8i
|
2012
|
區間內最後1筆料
|
LAST_VALUE
|
8i
|
2012
|
|
區間內第N筆料
|
NTH_VALUE
|
11gR2
|
2012
|
|
彙總運算
|
累加
|
SUM
|
8i
|
2012
*2005未支援移動概念 |
移動平均數
|
AVG
|
8i
|
2012
|
|
區間內最大值
|
MAX
|
8i
|
2012
|
|
區間內最小值
|
MIN
|
8i
|
2012
|
|
區間內數量
|
COUNT
|
8i
|
2012
|
|
群組字串合併
|
11gR2
|
2017 (STRING_AGG)
|
||
排序分群
|
資料歸屬群組
|
NTILE
|
8i
|
2012
|
占比
|
總數(報表值)占比
|
8i
|
沒有留言:
張貼留言