如何在 Presto SQL 中为每个类别提取 3 条随机记录?
How to pull 3 random records per category in Presto SQL?
我有以下 table:
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
但我找不到执行此操作的正确语法。
它给了我
Not a window function: random
使用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
。
我有以下 table:
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
但我找不到执行此操作的正确语法。 它给了我
Not a window function: random
使用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
。