在Presto SQL中创建箱-以编程方式

时间:2019-06-13 21:10:32

标签: sql presto

我是Presto SQL语法的新手,并且想知道是否存在一个函数,该函数将在一定范围内将行分档到n分档中。

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

任何建议将不胜感激!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您可以使用整数除法:

select (intcol - 1) / 5 as bin

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