使用Oracle分析函数随机抽取N条记录

2014-11-24 17:15:11 · 作者: · 浏览: 1

模拟一个歌曲表,有歌曲ID和作者ID,并且初始化一些数据


create table music(

music_id int primary key,


userid int


);


insert into music(music_id)


select rownum rn from dual connect by level<1000;


update music set userid= mod(music_id,5);


commit;
要求:
每个作者随机抽取他的3个作品。

SQL如下


select * from

(


select music_id,userid,ROW_NUMBER() OVER (PARTITION BY userid ORDER BY dbms_random.random()) rn from music


)


where rn<=3;

第一次执行:


使用Oracle分析函数随机抽取N条记录


第二次执行:


使用Oracle分析函数随机抽取N条记录