以编程方式在 presto 中创建箱



我是Presto SQL语法的新手,并且想知道是否存在一个函数可以将行装订到特定范围内的n箱中。

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

任何建议将不胜感激!

您可以使用标准 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
    ...

你可以只使用整数除法:

select (intcol - 1) / 5 as bin

Presto 进行整数除法,因此您不必担心余数。

相关内容

  • 没有找到相关文章