网站首页 > 数据库 / 正文
在实际工作中我们会遇到随机获取表中部分数据进行分析的案例(类似于随机取样)。本文针对此情况列举两个方法,做一下简单为介绍。下文以随机获取100条数据为例
1、rownum+dbms_random.random
一般我们随机获取数据,可以用rownum大于某个值来获取数据,脚本如下:
select * from <table> where rownum < 101
其实这种获取数据的方法并没有真正意义上实现“随机”,每次我们获取的数据是一样的。
真正随机获取数据,需要用到一个函数:dbms_random.random,dbms_random.random为获取任意大小的数据,我们每次查询都根据该值排序,即实现了“随机”的结果,正常查询脚本如下:
select * from (select * from <table> order by dbms_random.random) where rownum < 101
2、sample
sample的英文含义就有“样本”的意思。该统计是基于统计学统计返回数据,也是基于一个概率问题,因此返回数据量不一致,对此做以下说明:
A、 sample 是随机采样函数,参数是百分比,取值范围(0.00001,99.99999)
B、sample局限性较多:只对单表生效;不能用于表连接和远程表;短时间(几秒)内采样几乎相同;先采样再执行where子句
C、 sample会使sql自动使用CBO(cost-based SQL optimizer)
实例查询脚本如下:
返回1%的数据:select * from dfk_tj_all sample(1)
返回50%的数据:select * from dfk_tj_all sample(50)
Tags:导出oracle数据
猜你喜欢
- 2024-11-26 超全备份脚本!涵盖Oracle、MySQL、PG等主流数据库
- 2024-11-26 PCS 7 CFC的常用功能与操作
- 2024-11-26 Oracle常用工具使用 - AWR
- 2024-11-26 「赵强老师」使用Oracle的跟踪文件
- 2024-11-26 数据迁移注意事项【细数Oracle与Mysql不同】
- 2024-11-26 ORACLE大对象LOB移动及导出操作报ORA-01555错误解决
- 2024-11-26 Oracle 19C 数据泵导出的dmp导入 12C 报ORA-39002 错误解决方法
- 2024-11-26 Oracle 不是有效的导出文件,标头验证失败 解决方法
- 2024-11-26 值得收藏的Oracle官方文档学习路线图
- 2024-11-26 「数据库数据恢复」LINUX EXT3下ORACLE数据库误删除的数据恢复