我对Presto SQL语法是个新手,我想知道是否有一个函数可以将行放入某个范围内的n箱中。
例如,我有一个表,其中包含1m个不同的整数,范围从1到100。如何在1到100之间创建20个bin ( 1-5,6-10,11-15...等)而不使用20个独立的CASE WHEN语句?有没有标准的SQL函数可以执行入库功能?
如有任何建议,我们将不胜感激!
发布于 2019-06-14 05:41:20
您可以使用标准的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
...发布于 2019-06-14 05:27:57
你可以只使用整数除法:
select (intcol - 1) / 5 as binPresto做整数除法,所以你不必担心余数。
https://stackoverflow.com/questions/56588602
复制相似问题