數(shù)據(jù)庫SQL分析函數(shù)/窗口函數(shù)專題,值得收藏!幾乎涵蓋所有數(shù)據(jù)庫齐遵,例如:Oracle寂玲、Hive、MySQL8.0梗摇、MaxComputer等拓哟。企業(yè)面試中,更是鐘情分析函數(shù)問題伶授,筆試断序、面試到基本跑不了。
? ? ? ? 分析函數(shù)主要分為四類:
? ? ? ? 1.聚合分析函數(shù)
? ? ? ? 2.排名分析函數(shù)
? ? ? ? 3.數(shù)學(xué)分析函數(shù)
? ? ? ? 4.行比較分析函數(shù)
一.聚合分析函數(shù)
SUM? ? ? : 該函數(shù)計算組中表達(dá)式的累積和
COUNT? : 對一組內(nèi)發(fā)生的事情進行累積計數(shù)
MIN? ? ? ? : 在一個組中的數(shù)據(jù)窗口中查找表達(dá)式的最小值
MAX? ? ? : 在一個組中的數(shù)據(jù)窗口中查找表達(dá)式的最大值
AVG? ? ? ? : 用于計算一個組和數(shù)據(jù)窗口內(nèi)表達(dá)式的平均值糜烹。
二.排名分析函數(shù)
ROW_NUMBER :? -- 正常排序[1,2,3,4] -- 必須有order_by
RANK? ? ? ? ? ? ? ? ? : -- 跳躍排序[1,2,2,4] -- 必須有order_by
DENSE_RANK? ? : -- 密集排序[1,2,2,3] -- 必須有order_by
FIRST? ? ? ? ? ? ? ? ? : 從DENSE_RANK返回的集合中取出排在最前面的一個值的行
LAST? ? ? ? ? ? ? ? ? ? : 從DENSE_RANK返回的集合中取出排在最后面的一個值的行
FIRST_VALUE? ? : 返回組中數(shù)據(jù)窗口的第一個值
LAST_VALUE? ? ? : 返回組中數(shù)據(jù)窗口的最后一個值违诗。
三.數(shù)學(xué)分析函數(shù)
STDDEV? ? ? :計算當(dāng)前行關(guān)于組的標(biāo)準(zhǔn)偏離
STDDEV_POP:該函數(shù)計算總體標(biāo)準(zhǔn)偏離,并返回總體變量的平方根
STDDEV_SAMP:該函數(shù)計算累積樣本標(biāo)準(zhǔn)偏離疮蹦,并返回總體變量的平方根
VAR_POP? ? :該函數(shù)返回非空集合的總體變量(忽略null)
VAR_SAMP? ? :該函數(shù)返回非空集合的樣本變量(忽略null)
VARIANCE? ? :如果表達(dá)式中行數(shù)為1诸迟,則返回0,如果表達(dá)式中行數(shù)大于1愕乎,則返回VAR_SAMP
COVAR_POP? :返回一對表達(dá)式的總體協(xié)方差
COVAR_SAMP :返回一對表達(dá)式的樣本協(xié)方差
CORR? ? ? ? :返回一對表達(dá)式的相關(guān)系數(shù)
CUME_DIST? :計算一行在組中的相對位置
NTILE? ? ? ? :將一個組分為"表達(dá)式"的散列表示(類于Hive的分桶原理)
PERCENT_RANK :和CUME_DIST(累積分配)函數(shù)類似
PERCENTILE_DISC :返回一個與輸入的分布百分比值相對應(yīng)的數(shù)據(jù)值
PERCENTILE_CONT :返回一個與輸入的分布百分比值相對應(yīng)的數(shù)據(jù)值
RATIO_TO_REPORT :該函數(shù)計算expression/(sum(expression))的值阵苇,它給出相對于總數(shù)的百分比
REGR_ (Linear Regression) Functions :這些線性回歸函數(shù)適合最小二乘法回歸線,有9個不同的回歸函數(shù)可使用
四.行比較分析函數(shù)
LAG? ? ? ? :可以訪問結(jié)果集中的其它行而不用進行自連接? ? ? -- 落后 -- lag(xx,1,0)
LEAD? ? ? :LEAD與LAG相反感论,LEAD3可以訪問組中當(dāng)前行之后的行? ? -- 領(lǐng)先 -- lead(xx,1,0)