Как вытащить 3 случайных записи на категорию в Presto SQL? - PullRequest
0 голосов
/ 03 марта 2020

У меня есть следующая таблица:

category_id  name
    5         rob
    5         james
    5         kobert
    5         ken
    4         jef
    3         rok

Я хочу написать запрос, который дает случайные 3 имени для каждой категории.

Возможные выходные данные, например:

category_id  name
    5         rob
    5         james
    5         ken
    4         jef
    3         rok

Я знаю, что это должно быть что-то вроде:

SELECT category_id, name
FROM(
    SELECT category_id, name, RANDOM() Over (Partition By category_id) rn
    FROM dataset )
WHERE rn<=3

, но я не могу найти правильный синтаксис для этого. Это дает мне

Не оконная функция: случайно

1 Ответ

1 голос
/ 03 марта 2020

Использование row_number():

SELECT category_id, name
FROM (SELECT category_id, name,
             row_number() Over (Partition By category_id order by random()) as seqnum
      FROM dataset
     )
WHERE seqnum <= 3;

То есть random() входит в order by.

...