我有下表:
category_id name
5 rob
5 james
5 kobert
5 ken
4 jef
3 rok
Run Code Online (Sandbox Code Playgroud)
我想编写一个查询,为每个类别提供随机 3 个名称。
例如,可能的输出可以是:
category_id name
5 rob
5 james
5 ken
4 jef
3 rok
Run Code Online (Sandbox Code Playgroud)
我知道它应该是这样的:
SELECT category_id, name
FROM(
SELECT category_id, name, RANDOM() Over (Partition By category_id) rn
FROM dataset )
WHERE rn<=3
Run Code Online (Sandbox Code Playgroud)
但我找不到执行此操作的正确语法。它给了我
非窗函数:随机
使用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;
Run Code Online (Sandbox Code Playgroud)
也就是说,random()进入order by.
| 归档时间: |
|
| 查看次数: |
7244 次 |
| 最近记录: |