hive裏面卻是有個percentile函數和percentile_approx函數,其使用方式爲percentile(col, p)、percentile_approx(col, p),p∈(0,1)
其中percentile要求輸入的字段必須是int類型的,而percentile_approx則是數值相似型的均可以
其實percentile_approx還有一個參數B:percentile_approx(col, p,B),參數B控制內存消耗的近似精度,B越大,結果的準確度越高。默認爲10,000。當col字段中的distinct值的個數小於B時,結果爲準確的百分位數。
若是我要求多個分位數怎麼辦呢?,能夠把p換爲array(p1,p2,p3…),即app
percentile_approx(col,array(0.05,0.5,0.95),9999)函數
若是不放心的話,就給col再加個轉換: 內存
percentile_approx(cast(col as double),array(0.05,0.5,0.95),9999)ast
其輸出結果長這樣:di
[0.0,4001.0,4061.0]co
無法直接用,再加個轉換:cas
explode(percentile_approx(cast(col as double),array(0.05,0.5,0.95),9999))as percentile參數