首页 > 解决方案 > 在 presto sql 中创建 bin - 以编程方式

问题描述

我是 Presto SQL 语法的新手,想知道是否存在将行合并到n特定范围内的 bin 的函数。

例如,我有一张表,其中包含 1m 个不同整数,范围从 1 到 100。我可以做些什么来创建 1 到 100 之间的 20 个 bin(一个 bin 用于 1-5、6-10、11-15 ......等)。 ) 不使用 20 个单独的CASE WHEN语句?是否有任何标准 SQL 函数可以执行分箱功能?

任何意见,将不胜感激!

标签: sqlprestotrino

解决方案


您可以使用标准的 SQL 函数width_bucket。例如:

WITH data(value) AS (
    SELECT rand(100)+1 FROM UNNEST(sequence(1,10000))
) 
SELECT value, width_bucket(value, 1, 101, 20) bucket
FROM data

产生:

 value | bucket
-------+--------
   100 |     20
    98 |     20
    38 |      8
    42 |      9
    67 |     14
    74 |     15
     6 |      2
    ...

推荐阅读