Syntax

    Arguments

    - 创建直方图的表达式。此表达式必须计算为数值或可隐式转换为数值的值。

    此值的范围必须为 -(2^53 - 1)2^53 - 1 (含).

    min_valuemax_value - 表达式可接受范围的最低值点和最高值点。这两个参数必须为数值并且不相等。

    num_buckets - 分桶的数量,必须是正整数值。将表达式中的一个值分配给每个存储桶,然后该函数返回相应的存储桶编号。

    Returned value

    返回表达式值所在的桶号。

    当表达式超出范围时,函数返回规则如下:

    如果表达式的值大于或等于max_value返回num_buckets + 1.

    如果任意参数为null返回null.

    1. DROP TABLE IF EXISTS width_bucket_test;
    2. CREATE TABLE IF NOT EXISTS width_bucket_test (
    3. `k1` int NULL COMMENT "",
    4. `v1` date NULL COMMENT "",
    5. `v2` double NULL COMMENT "",
    6. `v3` bigint NULL COMMENT ""
    7. ) ENGINE=OLAP
    8. DUPLICATE KEY(`k1`)
    9. DISTRIBUTED BY HASH(`k1`) BUCKETS 1
    10. PROPERTIES (
    11. "replication_allocation" = "tag.location.default: 1",
    12. "storage_format" = "V2"
    13. );
    14. INSERT INTO width_bucket_test VALUES (1, "2022-11-18", 290000.00, 290000),
    15. (2, "2023-11-18", 320000.00, 320000),
    16. (4, "2025-11-18", 400000.00, 400000),
    17. (5, "2026-11-18", 470000.00, 470000),
    18. (6, "2027-11-18", 510000.00, 510000),
    19. (7, "2028-11-18", 610000.00, 610000),
    20. (8, null, null, null);
    21. SELECT * FROM width_bucket_test ORDER BY k1;
    22. +------+------------+-----------+--------+
    23. | k1 | v1 | v2 | v3 |
    24. +------+------------+-----------+--------+
    25. | 1 | 2022-11-18 | 290000 | 290000 |
    26. | 2 | 2023-11-18 | 320000 | 320000 |
    27. | 3 | 2024-11-18 | 399999.99 | 399999 |
    28. | 4 | 2025-11-18 | 400000 | 400000 |
    29. | 5 | 2026-11-18 | 470000 | 470000 |
    30. | 6 | 2027-11-18 | 510000 | 510000 |
    31. | 7 | 2028-11-18 | 610000 | 610000 |
    32. | 8 | NULL | NULL | NULL |
    33. +------+------------+-----------+--------+
    34. SELECT k1, v1, v2, v3, width_bucket(v1, date('2023-11-18'), date('2027-11-18'), 4) AS w FROM width_bucket_test ORDER BY k1;
    35. +------+------------+-----------+--------+------+
    36. | k1 | v1 | v2 | v3 | w |
    37. +------+------------+-----------+--------+------+
    38. | 1 | 2022-11-18 | 290000 | 290000 | 0 |
    39. | 2 | 2023-11-18 | 320000 | 320000 | 1 |
    40. | 3 | 2024-11-18 | 399999.99 | 399999 | 2 |
    41. | 4 | 2025-11-18 | 400000 | 400000 | 3 |
    42. | 5 | 2026-11-18 | 470000 | 470000 | 4 |
    43. | 6 | 2027-11-18 | 510000 | 510000 | 5 |
    44. | 8 | NULL | NULL | NULL | NULL |
    45. +------+------------+-----------+--------+------+
    46. SELECT k1, v1, v2, v3, width_bucket(v2, 200000, 600000, 4) AS w FROM width_bucket_test ORDER BY k1;
    47. +------+------------+-----------+--------+------+
    48. | k1 | v1 | v2 | v3 | w |
    49. +------+------------+-----------+--------+------+
    50. | 1 | 2022-11-18 | 290000 | 290000 | 1 |
    51. | 2 | 2023-11-18 | 320000 | 320000 | 2 |
    52. | 3 | 2024-11-18 | 399999.99 | 399999 | 2 |
    53. | 4 | 2025-11-18 | 400000 | 400000 | 3 |
    54. | 5 | 2026-11-18 | 470000 | 470000 | 3 |
    55. | 6 | 2027-11-18 | 510000 | 510000 | 4 |
    56. | 7 | 2028-11-18 | 610000 | 610000 | 5 |
    57. | 8 | NULL | NULL | NULL | NULL |
    58. +------+------------+-----------+--------+------+
    59. SELECT k1, v1, v2, v3, width_bucket(v3, 200000, 600000, 4) AS w FROM width_bucket_test ORDER BY k1;
    60. +------+------------+-----------+--------+------+
    61. | k1 | v1 | v2 | v3 | w |
    62. +------+------------+-----------+--------+------+
    63. | 1 | 2022-11-18 | 290000 | 290000 | 1 |
    64. | 2 | 2023-11-18 | 320000 | 320000 | 2 |
    65. | 3 | 2024-11-18 | 399999.99 | 399999 | 2 |
    66. | 4 | 2025-11-18 | 400000 | 400000 | 3 |
    67. | 5 | 2026-11-18 | 470000 | 470000 | 3 |
    68. | 6 | 2027-11-18 | 510000 | 510000 | 4 |
    69. | 7 | 2028-11-18 | 610000 | 610000 | 5 |
    70. | 8 | NULL | NULL | NULL | NULL |
    71. +------+------------+-----------+--------+------+

    WIDTH_BUCKET