本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
APPROX PERCENTILE 函數
APPROX PERCENTILE 用於估計指定表達式或資料欄的百分位數值,而不必排序整個資料集。當您需要快速了解大型資料集的分佈或追蹤以百分位數為基礎的指標,而執行精確百分位數計算時,此函數非常有用。不過,請務必了解速度和準確性之間的權衡,並根據使用案例的特定需求選擇適當的容錯能力。
語法
APPROX_PERCENTILE(expr, percentile [, accuracy])
引數
- expr
-
您要預估百分位數值的表達式或資料欄。
它可以是單一資料欄、複雜表達式或資料欄的組合。
- percentile
-
您要預估的百分位數值,以介於 0 和 1 之間的值表示。
例如,0.5 會對應到第 50 個百分位數 (中位數)。
- 準確度
-
選用參數,指定百分位數預估的所需準確性。這是介於 0 和 1 之間的值,代表預估值可接受的相對錯誤上限。較小的
accuracy
值將產生更精確但較慢的估算。如果未提供此參數,則會使用預設值 (通常約為 0.05 或 5%)。
傳回值
傳回數值或 ANSI 間隔資料欄 col 的近似百分位數,這是排序的 col 值中的最小值 (從最小到最大排序),使得不超過 col 值的百分比小於值或等於該值。
百分比的值必須介於 0.0 和 1.0 之間。準確度參數 (預設值:10000) 是正數值常值,可控制記憶體成本的近似準確度。
較高的準確度值可產生更好的準確度,1.0/accuracy
是近似值的相對錯誤。
當百分比為陣列時,百分比陣列的每個值必須介於 0.0 和 1.0 之間。在此情況下, 會以指定的百分比陣列傳回資料欄 col 的近似百分位數陣列。
範例
下列查詢預估response_time
資料欄的第 95 個百分位數,最大相對誤差為 1% (0.01)。
SELECT APPROX_PERCENTILE(response_time, 0.95, 0.01) AS p95_response_time FROM my_table;
下列查詢預估tab
資料表中col
資料欄的第 50 個、第 40 個和第 10 個百分位數的值。
SELECT approx_percentile(col, array(0.5, 0.4, 0.1), 100) FROM VALUES (0), (1), (2), (10) AS tab(col)
下列查詢預估 col 欄中值的第 50 個百分位數 (中位數)。
SELECT approx_percentile(col, 0.5, 100) FROM VALUES (0), (6), (7), (9), (10) AS tab(col)