Создание бинов в Presto SQL - программно - PullRequest
1 голос
/ 14 июня 2019

Я новичок в синтаксисе Presto SQL, и мне интересно, существует ли функция, которая будет связывать строки в n ячейки в определенном диапазоне.

Например, у меня есть таблица с 1-м различными целыми числами в этом диапазонеот 1 до 100. Что я могу сделать, чтобы создать 20 корзин от 1 до 100 (корзина для 1-5, 6-10, 11-15 ... и т. д.) без использования 20 отдельных операторов CASE WHEN?Существуют ли какие-либо стандартные функции SQL, которые будут выполнять функцию биннинга?

Буду признателен за любой совет!

Ответы [ 2 ]

2 голосов
/ 14 июня 2019

Вы можете использовать стандартную функцию 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
    ...
0 голосов
/ 14 июня 2019

Вы можете просто использовать целочисленное деление:

select (intcol - 1) / 5 as bin

Presto выполняет целочисленное деление, поэтому вам не нужно беспокоиться об остатке.

...