2016-11-23 14 views
0

IDフィールドと10個の値をとることができるスコアフィールドの2つの列がある場合、どのようにIDごとに5個のランダムな行を選択できますか?私は、次のようにしてテーブルから5つのランダムな行を選択できることを知っています:db2与えられたidのx個のランダムな行を選択

select *, rand() as idx 
from mytable 
order by idx fetch first 5 rows only 

しかし、IDごとに約5行ですか?

答えて

3

あなたは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; 
+0

どうもありがとうございました@Gordon Linoff – brucezepplin