設定分組範圍的最小值、最大值和分組個數,構建指定個數的大小相同的分組,返回指定欄位值落入的分組編號。此函數為MaxCompute 2.0擴充函數。
注意事項
支援的資料類型為BIGINT、INT、FLOAT、DOUBLE、DECIMAL以及資料類型2.0的DECIMAL(precision,scale),詳情請參見2.0資料類型版本。
命令格式
width_bucket(numeric <expr>, numeric <min_value>, numeric <max_value>, int <num_buckets>)
參數說明
expr:必填。需要判斷分組編號的欄位。
min_value:必填。分組範圍最小值。
max_value:必填。分組範圍最大值,最大值必須比最小值大。
num_buckets:必填。分組個數,必須大於0。
傳回值說明
傳回值為BIGINT類型,範圍為0到設定的分組個數+1。返回規則如下:
expr值小於min_value時,返回0。
expr大於max_value時,返回設定的分組個數+1。
expr值為NULL時,分組編號傳回值也為NULL。其他情況返回欄位值落入的分組編號。欄位值對應的分組編號取值規則為
floor( num_buckets * (expr - min_value)/(max_value - min_value) + 1)
。min_value、max_value或num_buckets值為NULL時,返回NULL。
使用樣本
樣本1:入參無NULL。命令樣本如下。
select key,value,width_bucket(value,100,500,5) as value_group from values (1,99), (2,100), (3,199), (4,200), (5,499), (6,500), (7,501), (8,NULL) as t(key,value);
返回結果如下。
+------+-------+-------------+ | key | value | value_group | +------+-------+-------------+ | 1 | 99 | 0 | | 2 | 100 | 1 | | 3 | 199 | 2 | | 4 | 200 | 2 | | 5 | 499 | 5 | | 6 | 500 | 6 | | 7 | 501 | 6 | | 8 | NULL | NULL | +------+-------+-------------+
樣本2:入參存在NULL。命令樣本如下。
select key,value,width_bucket(value,100,500,null) as value_group from values (1,99), (2,100), (3,199), (4,200), (5,499), (6,500), (7,501), (8,NULL) as t(key,value);
返回結果如下。
+------+-------+-------------+ | key | value | value_group | +------+-------+-------------+ | 1 | 99 | NULL | | 2 | 100 | NULL | | 3 | 199 | NULL | | 4 | 200 | NULL | | 5 | 499 | NULL | | 6 | 500 | NULL | | 7 | 501 | NULL | | 8 | NULL | NULL | +------+-------+-------------+
相關函數
WIDTH_BUCKET函數屬於數學函數,更多資料計算、資料轉換的相關函數請參見數學函數。