转自: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数据块结构分析说明BLOCK结构详解,讲解块结构,并且附有实例说明,对块的存储方式进行详细说明
如何有效利用oracle的数据字典
巧用dblink结合oracle快照实现两台服务器的数据同步 有详细步骤
利用Oracle AQ实现数据异步操作.pdf
通过EXP/IMP可以实现产品系统的跨平台的迁移,需要迁移的数据库已经部署了高级复制环境,打算进行一系列的测试,测试包含高级复制环境数据库在通过 EXP/IMP工具迁移...文中通过实例介绍了利用EXP/IMP工具实现数据迁移。
利用Oracle实现对迁移人口的数据挖掘.pdf
SpringBoot定时任务实现Oracle和mysql数据同步
oracle变化数据捕获,学习和理解如何在ORACLE数据库跟踪数据变化的教程
在Oracle 9i中可以方便的把数据导出为文件,或者从文件导入。通过Oracle的管理服务器(Oracle Management Server,OMS)可以方便的实现,整个操作...本文将为大家介绍如何利用Oracle管理服务器将数据导入导出的方法。
oracle导出excel的数据字典sql,根据该sql可以导出数据字典。
Oracle主数据管理Oracle主数据管理Oracle主数据管理Oracle主数据管理Oracle主数据管理Oracle主数据管理Oracle主数据管理Oracle主数据管理Oracle主数据管理Oracle主数据管理Oracle主数据管理Oracle主数据管理Oracle主...
利用Oracle数据库快照实现数据双向复制.pdf
NULL 博文链接:https://hbyuan.iteye.com/blog/850709
Oracle 数据迁移是比较麻烦的,对菜鸟来说更是如此。最近由于更换服务器,需要将Oracle迁移到另外一台机器,在两个服务器环境相同,以及 Oracle版本相同的前提下,通过直接拷贝数据文件到新服务器,就可以直接迁移...
oracle 11g 数据文件头block 1解析 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ##powered by :黄林杰_Huanglinjie ##version : 2023-v11 ##联系方式:17767151782 ##blog: https://blog.csdn.net/lixora/ ##info: ...
Oracle 元数据表 Oracle 元数据表 Oracle 元数据表 Oracle 元数据表
oracle 导出数据字典的小工具 能导成word形式的带表格的数据字典,非常好用从网上转载的,不会的可以留言啊
通过浏览器访问数据量大的表时需要进行分页。ASP对数据库记录分页显示可以通过ADO对象集Recordset对象...本文将介绍一种利用 ASP实现对Oracle数据记录分页显示的方法,使得Oracle用户能够轻松方便地实现记录分页显示。