0
中值我有以下表T1:計算HIVE
key value
1 38.76
1 41.19
1 42.22
2 29.35182
2 28.32192
3 33.66
3 33.47
3 33.35
3 33.47
3 33.11
3 32.98
3 32.5
我要計算每個密鑰組的中位數。根據documentation,percentile_approx函數應該適用於此。每個組的中位值是:
1 41.19
2 28.83
3 33.35
然而,percentile_approx函數返回這些:
1 39.974999999999994
2 28.32192
3 33.23.0000000000004
其中明確不是中值。
這是我跑的查詢:
select key, percentile_approx(value, 0.5, 10000) as median
from t1
group by key
這似乎是不考慮每組一個值,從而導致錯誤的中位數。排序不會影響結果。有任何想法嗎?
這是怎麼處理的情況下,當有偶數個值?此外,當你不使用任何聚合函數@Nithiyanandhan – Danzo
我已經編輯了我的答案,你爲什麼在第一部分通過鍵分組?第一部分將根據密鑰對值進行排序並查找中間行號,第二部分將查找每個密鑰的行號。通過加入第一個結果和第二個結果,我們將得到密鑰的中位數。這也將是偶數場景。 – anand