转自:http://blog.sina.com.cn/s/blog_4b13ec250100wm14.html

做数据分析的,免不了碰到记录数据量很大,怎么办?

做全面分析是不现实也没有必要。

介绍一下抽样方法及实现

几种常用的抽样方法:

1.简单随机抽样(simple random sampling)

将所有调查总体编号,再用抽签法或随机数字表随机抽取部分观察数据组成样本。

优点:操作简单,均数、率及相应的标准误计算简单。

缺点:总体较大时,难以一一编号。

2.系统抽样(systematic sampling)

又称机械抽样、等距抽样,即先将总体的观察单位按某一顺序号分成n个部分,再从第一部分随机抽取第k号观察单位,依次用相等间距从每一部分各抽取一个观察单位组成样本。

优点:易于理解、简便易行。

缺点:总体有周期或增减趋势时,易产生偏性。

3.整群抽样(cluster sampling)

先将总体依照一种或几种特征分为几个子总体(类.群),每一个子总体称为一层,然后从每一层中随机抽取一个子样本,将它们合在一起,即为总体的样本,称为分层样本

优点:便于组织、节省经费。

缺点:抽样误差大于单纯随机抽样。

4.分层抽样(stratified sampling)

将总体样本按其属性特征分成若干类型或层,然后在类型或层中随机抽取样本单位,合起来组成样本。有按比例分配和最优分配(过度抽样是否就是最优分配方法?)两种方案。

特点:由于通过划类分层,增大了各类型中单位间的共同性,容易抽出具有代表性的调查样本。该方法适用于总体情况复杂,各类别之间差异较大(比如金融客户风险/非风险样本的差异),类别较多的情况。

优点:样本代表性好,抽样误差减少。

我们需要使用抽样的方法从总量用户中随机抽取100W个样本记录。

down到本机然后进行sas抽样,不可能!

直接sas联机抽样,更不可能!

直接提交服务器进行抽样,然后链接到本机进行分析

现在介绍一下ORACLE抽样方法:

Oracle取随机数据实现

随机查看前N条记录

SELECT * FROM (SELECT * FROM TB_PHONE_NO ORDER BY SYS_GUID())

WHERE ROWNUM < 10;

SELECT * FROM (SELECT * FROM chifan ORDER BY dbms_random.random) WHERE ROWNUM<=5

SQL> SELECT * FROM (SELECT * FROM A SAMPLE(0.01)) WHERE ROWNUM<=1;

注意每次取得的值都不同。

SAMPLE 是随机抽样,后面的数值是采样百分比。

以下是oracle 中随机取数据的方法的详细讲解:

1.快速随机取数据(推荐使用):

select * from MEMBER sample(1) where rownum <= 10

2.随机取数据,较慢

select * from (

select * from MEMBER order by dbms_random.value

) where rownum<=10

========原文========

最近在做系统时用到了随机抽取记录的问题;

上网上查找了很多相关资料,发现了不同的方法及其差异。都是基于ORACLE的方法哦

首先第一个是随机抽取6个

select * from  (select * from tablename order by order by dbms_random.value) where  rownum<7

这个方法的原理我认为应该是把表中的数据全部查询出来按照随机数进行排列后在从查询出来的数据中查询中6条记录,这个方法我在使用的过程中发现,如果记录一多的话查询的速度有一点点的慢,测试时是7000条,如果几万几十万的话可能就更慢了;

第二个是利用oracle的sample()或sample block方法

select * from tablename sample ( 50 ) where  rownum<6

这个稍稍介绍一下sample

Oracle访问数据的基本方法有:

1.全表扫描

2.采样表扫描

全表扫描(Full table Scan)

全表扫描返回表中所有的记录。

执行全表扫描,Oracle读表中的所有记录,考查每一行是否满足WHERE条件。Oracle顺序的读分配给该表的每一个数据块,这样全表扫描能够受益于多块读.

每个数据块Oracle只读一次.

采样表扫描(sample table scan)

采样表扫描返回表中随机采样数据。

这种访问方式需要在FROM语句中包含SAMPLE选项或者SAMPLE BLOCK选项.

SAMPLE选项:

当按行采样来执行一个采样表扫描时,Oracle从表中读取特定百分比的记录,并判断是否满足WHERE子句以返回结果。

SAMPLE BLOCK选项:

使用此选项时,Oracle读取特定百分比的BLOCK,考查结果集是否满足WHERE条件以返回满足条件的纪录.

Sample_Percent:

Sample_Percent是一个数字,定义结果集中包含记录占总记录数量的百分比。

Sample值应该在[0.000001,99.999999]之间。

主要注意以下几点:

1.sample只对单表生效,不能用于表连接和远程表

2.sample会使SQL自动使用CBO

PS:虽然这样可以获取一定随机的数据,不过,输出的顺序却还是顺序的,不知道是不是Oracle的机制就是这样,还是菜鸟暂时也找不出啥原因,不过这个也算是解决了随机的需求,暂时就这样了~~

oracle 抽样_利用ORACLE实现数据抽样(sample block)相关推荐

  1. oracle 抽样_利用ORACLE实现数据抽样

    做数据分析的,免不了碰到记录数据量很大,怎么办? 做全面分析是不现实也没有必要. 介绍一下抽样方法及实现 几种常用的抽样方法: 1.简单随机抽样(simple random sampling) 将所有 ...

  2. java 执行oracle命令_利用oracle存储过程执行操作系统命令

    以下方法在WINNT,LINUX下的oracle9i上测试通过,java过程调用系统命令 首先给使用java存储过程的用户授予一定的权限 <>表示所有文件,也可以单独指定文件. r w e ...

  3. rda分析怎么做_利用Oracle RDA快速收集Oracle产品分析数据

    Remote Diagnostic Agent (RDA) 是一个工程师用Perl语言编写的命令行诊断工具,RDA提供统一的诊断工具支持包和预防的解决方法.提供给Oracle支持收集的客户环境全面的数 ...

  4. oracle存储过程备份,利用ORACLE存储过程与JOB结合实现对数据表自动备份

    烈火网(LieHuo.Net)教程 利用ORACLE存储过程与JOB结合实现对数据表自动备份. 1.创建存储过程 create or replace procedure data_auto_backu ...

  5. 利用oracle执行系统命令,利用oracle存储过程执行操作系统命令(转)

    以下方法在WINNT,LINUX下的oracle9i上测试通过,java过程调用系统命令 首先给使用java存储过程的用户授予一定的权限 <>表示所有文件,也可以单独指定文件. r w e ...

  6. oracle 事务_从Oracle到PG-PostgreSQL的MVCC机制简介

    作者:甘植恳-Aken PostgreSQL和Oracle.MySQL等RDBMS一样,都有自己的并发控制机制.而并发控制的目的是为了在多个事务同时运行时保持事务ACID属性. MVCC即Multi- ...

  7. jsp oracle连接池,利用Oracle自带的连接池类的一例

    利用Oracle自带的连接池类的一例 作者:未知    文章来源:www.jspcn.net 发布日期:2005年01月19日 /** 封装了对数据库的连接,用于处理SQL语句. @author:ya ...

  8. Oracle数据库中的方案,学习Oracle数据库_理解Oracle数据库中的方案

    理解数据库.表空间.数据文件之间的关系. 每个表空间由一个或多个数据文件组成.数据文件用于在物理上存储表空间中所有逻辑结构的数据.表空间中数据文件的大小之和就是表空间的存储容量(图中系统表空间存储容量 ...

  9. 如何判断基因组的重复区域_利用宏基因组数据组装巨病毒基因组的优势与限制...

    科学实验往往来自人们的奇思妙想,今天给大家分享一个有趣的研究,作者将已知巨病毒颗粒掺入到废水样品中,再尝试通过宏基因组从数据中恢复巨病毒基因组,从而判断此方式对于巨病毒研究的可靠性和有效性.测试结果到 ...

最新文章

  1. Codeforces Round #313 (Div. 1) B. Equivalent Strings
  2. python编程工资-2019年Python就业薪资怎么样?看完你就了解了
  3. linux mint 18.3 内核,Linux Mint Linux用户可以升级到18.2 18.3”
  4. POJ - 2115 C Looooops(扩展欧几里得)
  5. JSON解析的几种方式
  6. 图的遍历(Java)构造器
  7. ajax 接收json数据的进一步了解
  8. vscode如何创建一个go项目_如何用手机创建一个网站
  9. HTML5拖放API(代码展示)
  10. 陈广老师 C#语言参考视频打包下载地址
  11. 毕设一:python 爬取苏宁的商品评论
  12. android Launcher 自定义View 高仿hola一键清理效果
  13. AndroidStudio升级到3.1+之后,出现Java.util.NoSuchElementException
  14. mysql 内置函数大全 mysql内置函数大全
  15. DDR4、GDDR5、GDDR6内存的区别
  16. FFmpeg将mp4转成flv
  17. linux与linux之间共享目录
  18. KindEditor在线文本编辑器
  19. (附源码)python主机硬件配置推荐系统 毕业设计 231155
  20. linux 命令 ps的作用,Linux之ps命令

热门文章

  1. idea查看类层级hierarchy快捷键
  2. 岁月温柔-4 最美人间四月天
  3. 单自由度振动系统 matlab,单自由度系统的振动及matlab分析
  4. v8引擎和v12引擎_v8和v12引擎的区别是什么?
  5. 雀巢咖啡旗下感CAFÉ品牌正式推出全新单品--感CAFÉ鎏光咖啡
  6. 狂妄之人怎么用计算机弹,天谕手游狂妄之人乐谱代码分享
  7. 奇偶归一猜想(多组数据)——又称为3n+1猜想、冰雹猜想、角谷猜想
  8. ati自定义分辨率_修改三国无双 游戏自定义分辨率教学 6/19更新
  9. 炮轰三国服务器维护,炮轰三国上红色要多少个精华 | 手游网游页游攻略大全
  10. 怎样写作数学建模竞赛论文