表中每组数据随机抽取20%的SQL语句怎么写?

sxwjl 2016-08-31 10:17:58
对表中每组数据随机抽取20%(如以code分组)的记录,即要求某一组只有1-5条记录的抽1条,6-10条的抽2条,11-15条的抽3条...,请问SQL语句怎么写?
...全文
2057 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxwjl 2016-09-03
  • 打赏
  • 举报
回复
自己解决:
Select * from
(select CODE,NAME,row_number() over(partition by CODE order by CODE) t1,count(*) over partition by CODE) t2) where t1<=ceil(t2*0.2)
js14982 2016-09-01
  • 打赏
  • 举报
回复

select * from 
(select 
ntile(5) over(partition by  code order by rownum) ntile
from tt)
where ntile=1
ntile(5) 随机分5组
ghx287524027 2016-09-01
  • 打赏
  • 举报
回复

WITH TEMP AS
(
SELECT '移动号卡10元'   NAME,'0101' CODE FROM DUAL
UNION
SELECT '移动号卡20元'   NAME,'0101' CODE FROM DUAL
UNION
SELECT '移动号卡30元'   NAME,'0101' CODE FROM DUAL
UNION
SELECT '移动号卡40元'   NAME,'0101' CODE FROM DUAL
UNION
SELECT '联通号卡10元'   NAME,'0102' CODE FROM DUAL
UNION
SELECT '联通号卡20元'   NAME,'0102' CODE FROM DUAL
UNION
SELECT '联通号卡50元'   NAME,'0102' CODE FROM DUAL
UNION
SELECT '联通号卡100元'  NAME,'0102' CODE FROM DUAL
UNION
SELECT 'QQ游戏点卡10元' NAME,'0103' CODE FROM DUAL
UNION
SELECT 'QQ游戏点卡20元' NAME,'0103' CODE FROM DUAL
UNION
SELECT 'QQ游戏点卡30元' NAME,'0103' CODE FROM DUAL
UNION
SELECT 'QQ游戏点卡40元' NAME,'0103' CODE FROM DUAL
UNION
SELECT 'QQ游戏点卡50元' NAME,'0103' CODE FROM DUAL
UNION
SELECT 'QQ游戏点卡60元' NAME,'0103' CODE FROM DUAL
)

select t1.code,t1.name from  
(select CODE,NAME,row_number() over(partition by CODE order by CODE) rm from temp group by code,name order by 1,2) t1,
(select code,ceil(max(rm)*0.2) cnt from 
(select CODE,NAME,row_number() over(partition by CODE order by CODE) rm from temp group by code,name order by 1,2)
group by code) t2
where t1.code=t2.code and t1.rm<=t2.cnt
order by 1,2
这有一个写法,但不是最优的~
z123zjf 2016-09-01
  • 打赏
  • 举报
回复
按 code分组,分析函数垓下 ntile(5)over(partition by code order by .......)
z123zjf 2016-09-01
  • 打赏
  • 举报
回复
with t as(select rownum n from dual connect by level<=11) select n from (select n, ntile(1 / 0.2) over(order by dbms_random.random) rn from t) where rn = 1

17,137

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧