ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 分组后取随机记录??

分组后取随机记录??

原创 Linux操作系统 作者:e_soft 时间:2009-04-18 16:14:33 0 删除 编辑

脚本:
create table tab
(
name varchar2(20),
code varchar2(20)
);

insert into tab values('移动号卡10元','0101');
insert into tab values('移动号卡20元','0101');
insert into tab values('移动号卡30元','0101');
insert into tab values('移动号卡40元','0101');

insert into tab values('联通号卡10元','0102');
insert into tab values('联通号卡20元','0102');
insert into tab values('联通号卡50元','0102');
insert into tab values('联通号卡100元','0102');

insert into tab values('QQ游戏点卡10元','0103');
insert into tab values('QQ游戏点卡20元','0103');
insert into tab values('QQ游戏点卡30元','0103');
insert into tab values('QQ游戏点卡40元','0103');
insert into tab values('QQ游戏点卡50元','0103');
insert into tab values('QQ游戏点卡60元','0103');

select * from tab;

1        移动号卡10元        0101
2        移动号卡20元        0101
3        移动号卡30元        0101
4        移动号卡40元        0101
5        联通号卡10元        0102
6        联通号卡20元        0102
7        联通号卡50元        0102
8        联通号卡100元        0102
9        QQ游戏点卡10元        0103
10        QQ游戏点卡20元        0103
11        QQ游戏点卡30元        0103
12        QQ游戏点卡40元        0103
13        QQ游戏点卡50元        0103
14        QQ游戏点卡60元        0103

我想按code列分组,然后在每个分组中随机取一条记录,如何实现啊?

 

select name, code
  from (select tab.*,
               row_number() over(partition by code order by dbms_random.random) rn
          from tab)
where rn = 1

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21220558/viewspace-590889/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 设计范式
请登录后发表评论 登录
全部评论

注册时间:2009-03-26

  • 博文量
    28
  • 访问量
    23798