我是 Presto SQL 语法的新手,想知道是否存在将行分入n某个范围内的分箱的函数。
例如,我有一个包含 1m 不同整数的表,范围从 1 到 100。我可以做些什么来创建 1 到 100 之间的 20 个 bin(一个 bin 用于 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
Run Code Online (Sandbox Code Playgroud)
产生:
value | bucket
-------+--------
100 | 20
98 | 20
38 | 8
42 | 9
67 | 14
74 | 15
6 | 2
...
Run Code Online (Sandbox Code Playgroud)