db2为给定的id选择x个随机行

bru*_*lin 0 sql random db2

如果我有两列-一个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行呢?

Gor*_*off 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)