【oracle】-随机抽样N条记录
来源:互联网 发布:淘宝怎么设置淘宝客 编辑:程序博客网 时间:2024/04/27 09:01
第一部分:Oracle访问数据的基本方法
1、全表扫描(Full table Scan):执行全表扫描,Oracle读表中的所有记录,考查每一行是否满足WHERE条件。Oracle顺序的读分配给该表的每一个数据块,且每个数据块Oracle只读一次.这样全表扫描能够受益于多块读。
2、采样表扫描(sample table scan):扫描返回表中随机采样数据,这种访问方式需要在FROM语句中包含SAMPLE选项或者SAMPLE BLOCK选项。
第二部分:获取随机结果集的方法
1、使用sample获取随机结果集(sample只对单表生效,不能用于表连接、远程表、视图)
1-1、语法:SAMPLE [BLOCK ](sample_percent)[SEED (seed_value) ]
SAMPLE:表示按行采样来执行一个全表扫描,Oracle从表中读取特定百分比的记录,并判断是否满WHERE子句以返回结果。
BLOCK:表示使用随机块例举而不是随机行例举。
sample_percent:是随机获取一张表中记录的百分比。比如值为10,那就是表中的随机的百分之10的记录。值必须大于等于.000001,小于100。
SEED:表示从哪条记录返回,类似于预先设定例举结果,因而每次返回的结果都是固定的。该值必须介于和4294967295之间。
1-2、实例
--从表WM_ASN_HEADER 中“全表扫描”随机抽取20%的记录,再从中随机查询5条记录)
SELECT *
FROM WM_ASN_HEADER SAMPLE (20)
WHERE ROWNUM <= 5;
--从WM_ASN_HEADER中“采样表扫描”随机抽取10%的记录,再从中随机查询5条记录
SELECT *
FROM WM_ASN_HEADER SAMPLE BLOCK (10)
WHERE ROWNUM <= 5;
--使用seed,返回固定的结果集。
SELECT *
FROM WM_ASN_HEADER SAMPLE (10) SEED (3)
WHERE ROWNUM <= 5
2、使用DBMS_RANDOM包
有两种主要的使用方法分别是:DBMS_RANDOM.VALUE()和DBMS_RANDOM.RANDOM
2-1、获取一个随机数
获取0-10的一个随机整数
SELECT TRUNC(DBMS_RANDOM.VALUE (0, 10)) ramFROM DUAL;
获取0-100的一个随机浮点数
SELECT DBMS_RANDOM.VALUE (0, 100) ram FROM DUAL;
获取一个0.几的小数
SELECT DBMS_RANDOM.VALUE () randomNum FROM DUAL;
2-2、获取随机记录
SELECT *
FROM ( SELECT *
FROM WM_ASN_HEADER
ORDER BY DBMS_RANDOM.VALUE)
WHERE ROWNUM <= 3
SELECT *
FROM ( SELECT *
ORDER BY DBMS_RANDOM.VALUE(1,3))
WHERE ROWNUM <= 3
SELECT *
FROM ( SELECT *
FROM WM_ASN_HEADER
ORDER BY DBMS_RANDOM.random)
WHERE ROWNUM <= 3
2-3、获取下拉框的随机记录
Select CASE MOD(ABS(DBMS_RANDOM.random), 3)
WHEN 1 THEN
'入库'
when 2 then
'出库'
ELSE
'收货'
END STATUS
from dual
connect by level <= 10;
3、使用内部函数sys_guid()
SELECT *
FROM ( SELECT *
FROM WM_ASN_HEADER
ORDER BY sys_guid() )
WHERE ROWNUM <= 3
- 【oracle】-随机抽样N条记录
- Oracle中随机抽取N条记录
- Oracle中随机抽取N条记录
- Oracle随机抽取N条记录
- Oracle中随机抽取N条记录
- Oracle随机抽取N条记录
- oracle中随机抽取N条记录
- 随机从oracle数据库取N条记录
- ORACLE从表中随机返回n条记录
- MSSQL、MYSQL,ACCESSl,Oracle随机读取N条记录方法
- MSSQL、MYSQL,ACCESSl,Oracle随机读取N条记录方法
- oracle分页语句和随机取N条记录
- 使用Oracle分析函数随机抽取N条记录
- 随机提取N条记录
- 随机提取N条记录
- 随机提取N条记录
- 随机查询N条记录
- 随机取出数据库n条记录
- python_subprocess_git
- postgresql数据库用户名密码验证失败
- 基础数据结构之TreeMap源码分析
- DHCP协议原理及其实现流程
- SQL语句实现两张表之间不存在则插入,存在则更新
- 【oracle】-随机抽样N条记录
- 完整Debian7配置LAMP(Apache/MySQL/PHP)环境及搭建建站
- ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十六节--SignalR与ABP框架Abp.Web.SignalR及扩展
- 15个前端UI优秀框架
- 【安全牛学习笔记】 Linux 无线协议栈及配置命令
- JDK1.7更新到1.8,更改JAVA_HOME无法回到1.7
- Android Webview新认识(获取cookie,所加载网页内的链接的url)
- [操作系统] 文件系统的实现(二)
- postgresql自增id断层