如果我有两列-一个ID字段和一个可容纳10个可能值的得分字段,那么如何为每个ID选择5个随机行?我知道我可以通过使用以下命令从表中选择5个随机行:
select *, rand() as idx
from mytable
order by idx fetch first 5 rows only
Run Code Online (Sandbox Code Playgroud)
但是每个ID 5行呢?
您可以使用row_number():
select t.*
from (select t.*,
row_number() over (partition by idx order by rand()) as seqnum
from mytable t
) t
where seqnum <= 5;
Run Code Online (Sandbox Code Playgroud)