sql随机抽取数据50条_MySQL中随机抽样

2.9 随机抽样

在审计或IT审计中,常常使用抽样,也就是对具有审计相关性的总体中低于百分之百的项目实施审计程序,使所有抽样单元都有被选取的机会,为注册会计师针对整个总体得出结论提供合理基础。简单来说,就是我们需要从总体中选出一些样本,通过对样本的检查,得出结论,再推导出总体的结论。

在Excel中或一些软件中,我们可以非常容易在数据中抽样,但当数据量超过Excel表最大限制时或数据很大时,我们需要在数据库中处理,那么如何用SQL抽样,就是我们应该掌握的。本节我们介绍随机抽样的三种方法,数据仍采用2.6节中APP数据集里AppleStore表作为讲解示例。首先,我们通过select count(*) from AppleStore求出表中有7142条数据,假设我们需要随机抽样出100条数据。

「方法一」

select * from AppleStoreorder by rand()limit 100;

解释:rand()函数会产生0-1之间的随机数,order by rand()根据产生的随机数进行排序。limit 100截取前100行数据。从而达到随机抽样100条数据的目的。当然如果需要抽样出N条数据就使用limit N。即:

select * from 表名order by rand()limit N;

需要注意的是,虽然这是最简单的方法,并且在数据较小的表执行速度较快,但是当数据较大的时候,查询速度就会较慢。

「方法二」

我们先计算我们需要抽样数据与总体的占比100/7142=0.014,然后通过查询语句随机抽样出上述比例的数据:

select * from AppleStorewhere rand()<0.014

解释:对于每一行数据,都会执行判断条件where rand()<0.014,而rand()是产生0-1的随机函数,那么每条数据都有0.014的机率被筛选出来,最终会筛选出总体×0.014条数据。当然实际筛选出的数据条数不是固定的,它随着数据量越大越接近0.014这个比例。我们为了抽取出刚好100条数据,我们可以稍微提高抽取的比例,然后使用limit 100截取前100条数据:

select * from AppleStorewhere rand()<0.015limit 100;

「方法三」

本方法需要表中有一列是连续编号的数字,一般的表中id或序号都是连续编号的,我们可以直接使用。如果没有连续编号的列,那么我们需要人为的创建一列序号数据。在AppleStore中无论是id还是序号都是不连续的,所以我们首先新增一列,列名为‘num’。

新增列语法:

alter table 表名 add column 列名 数据类型;

比如,给AppleStore新增一列num,数据类型为int:

alter table AppleStore add column num int;

删除列语法:

alter table 表名 drop column 列名;

修改列名语法:

alter table 表名 change 原列名 新列名 数据类型;

以上是对列操作的语句用法,下面我们给创建的num列添加连续的序号:

set @rn=0;update AppleStore set num=(@rn:=@rn+1);

解释:在SQL中命名一个变量需要在前面加一个@符号,这里我们命名一个代表行数的变量@rn(row number)。update 表名 set 列名=值 where 列名=某值是修改值的语法。这里我们用num=(@rn:=@rn+1)使列num的值递增增加。

需要注意的是在使用update语句里,可能会报错:Error Code 1175 You are using safe update mode。也就是如果没有加where限制条件更新值是不允许的。这里我们关闭安全更新模式:

SET SQL_SAFE_UPDATES = 0;

通过上述步骤,我们给原表增加了递增的连续编号列num列。我们现在就可以根据num列进行随机抽样。

set @max=7142;set @min=1;select * from AppleStore a join  (select floor(@min+(@max-@min+1)*rand()) as num  from AppleStore  limit 100) b on a.num=b.numlimit 100;

解释:我们将num列的最大编号、最小编号分别命名为变量@max和@min。

select floor(@min+(@max-@min+1)*rand()) as numfrom AppleStorelimit 100

该子句的作用是随机生成100个num序号。其中floor()函数是对一个数向下取整,如floor(1.2)=1,这里采用向下取整,而不使用四舍五入的原因是防止抽样出的数据超过序号的最大值。该子句查询结果,我们重命名为表b,将表a,表b通过序号内连接,查找出b表中随机抽样出的100个序号所对应的数据。可以看出我们对序号的要求并不需要从1开始,它可以从任意值开始,只要序号是连续的。本方法在数据量大的情况下也有较快的查询速度。

上面我们添加num列是直接在原表上添加列并生成递增连续编号,很多时候修改原数据表是不妥的,可以使用with as将新增num列后的查询表结果作为可以被引用的片断。

select *,row_number() over (order by id) as numfrom AppleStore

row_number() over (order by id) as num,row_number函数将原表数据按id排序后生成序号,重命名为num。该查询语句实际就是在原AppleStore表基础上增加了列num,只是序号只显示在查询结果中,而不是对原表进行修改。我们利用with as将AppleStore用增加的num列来替换。

set @max=7142;set @min=1;with AppleStore as (select *,row_number() over (order by id) as num    from AppleStore)select * from AppleStore a join  (select floor(@min+(@max-@min+1)*rand()) as num  from AppleStore  limit 100) b on a.num=b.numlimit 100;

青藤数据-审计师自己的平台

bff0bc6a7f03f2b876b46a98469cf3ce.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring手动回滚事务_Spring总结---gt;03

什么是事务逻辑上的一组操作&#xff0c;组成这组操作的各个单元&#xff0c;要么全都成功&#xff0c;要么全都失败。事务的特性原子性&#xff1a;事务不可分割一致性&#xff1a;事务执行前后数据完整性保持一致隔离性&#xff1a;一个事务的执行不应该受到其他事务的干扰 持…

java-设计模式(结构型)-【代理模式】

1.代理模式(ProxyMode) 定义&#xff1a;外观模式是对类与类之间关系的描述&#xff0c;而代理模式是对原来的方法添加其他的操作。 代理有“网关”的含义&#xff0c;比如用户访问论坛&#xff0c;则要经过代理(网关)授权给你才能访问&#xff0c;即 游客和注册用户的权限不同…

mysql建表_128、mysql建表和简单sql

EMPLOYEES, 有四个字段&#xff0c;EMPLOYEE_ID:员工表(主键)、DEPT_ID:部门号、EMPLOYEE_NAME:员工姓名、EMPLOYEE_SALARY:员工工资。建表语句CREATE TABLE EMPLOYEES(EMPLOYEE_ID int not null primary key,DEPT_ID int,EMPLOYEE_NAME char(40),EMPLOYEE_SALARY double);检索…

LeetCode 1893. 检查是否区域内所有整数都被覆盖(差分)

文章目录1. 题目2. 解题1. 题目 给你一个二维整数数组 ranges 和两个整数 left 和 right 。每个 ranges[i] [starti, endi] 表示一个从 starti 到 endi 的 闭区间 。 如果闭区间 [left, right] 内每个整数都被 ranges 中 至少一个 区间覆盖&#xff0c;那么请你返回 true &a…

数据中台建设与应用_Gartner对于建设数据中台的建议

(文&#xff1a;Gartner高级研究总监 孙鑫)数据中台是中国本土诞生的一个名词&#xff0c;很多企业在“什么是数据中台”和“我要上XX中台”徘徊。其炒作程度跟当年的“大数据” 一词有的一拼&#xff0c;如果用Gartner的炒作周期图来看&#xff0c;数据中台目前已经逼近炒作的…

LeetCode 1894. 找到需要补充粉笔的学生编号

文章目录1. 题目2. 解题1. 题目 一个班级里有 n 个学生&#xff0c;编号为 0 到 n - 1 。 每个学生会依次回答问题&#xff0c;编号为 0 的学生先回答&#xff0c;然后是编号为 1 的学生&#xff0c;以此类推&#xff0c;直到编号为 n - 1 的学生&#xff0c;然后老师会重复这…

C# Excel处理工具

需求&#xff1a;选择一个Excel文件&#xff0c;然后对该Excel文件进行处理&#xff0c;再导出一个处理后的Excel文件。 效果图 声明&#xff1a;我对winform开发不熟&#xff0c;但是我看到许多开发人员做东西只管交差&#xff0c;从不考虑用户体验&#xff0c;也不考虑容错处…

mysql 坚向变横向_(排班表一)使用SQL语句使数据从坚向排列转化成横向排列

知识重点&#xff1a;1.extract(day from schedule01::timestamp)13Extract 属于 SQL 的 DML(即数据库管理语言)函数&#xff0c;同样&#xff0c;InterBase 也支持 Extract&#xff0c;它主要用于从一个日期或时间型的字段内抽取年、月、日、时、分、秒数据&#xff0c;因此&a…

LeetCode 1897. 重新分配字符使所有字符串都相等

文章目录1. 题目2. 解题1. 题目 给你一个字符串数组 words&#xff08;下标 从 0 开始 计数&#xff09;。 在一步操作中&#xff0c;需先选出两个 不同 下标 i 和 j&#xff0c;其中 words[i] 是一个非空字符串&#xff0c;接着将 words[i] 中的 任一 字符移动到 words[j] 中…

2015/4/14课堂练习

1.设计题目 书店针对《哈利波特》系列书籍进行促销活动&#xff0c;一共5卷&#xff0c;用编号0、1、2、3、4表示&#xff0c;单独一卷售价8元&#xff0c; 具体折扣如下所示&#xff1a; 本     数量 折扣 …

python 图片背景前景分离_【绝了】用 Python 把朋友头像变表情包!

正文在日常生活中&#xff0c;我们经常会存取一些朋友们的丑照&#xff0c;在这个项目中&#xff0c;我们以萌萌哒的熊猫头作为背景&#xff0c;然后试着在背景图上加入朋友们的照片&#xff0c;效果如下图所示。实现步骤导入朋友的照片(前景照片)&#xff1b;处理前景照片(缩放…

LeetCode 1899. 合并若干三元组以形成目标三元组

文章目录1. 题目2. 解题1. 题目 三元组 是一个由三个整数组成的数组。 给你一个二维整数数组 triplets &#xff0c;其中 triplets[i] [ai, bi, ci] 表示第 i 个 三元组 。 同时&#xff0c;给你一个整数数组 target [x, y, z] &#xff0c;表示你想要得到的 三元组 。 为了…

openpyxl 读写 excel

import openpyxl book openpyxl.load_workbook(b.xlsx) # 读取 # sheet book["name_tab"] sheet book.active # rowsheet.max_row # 行数 columnsheet.max_column # 列数 print(row) print(column) for r in range(2, row1): # 跳过表头&#xff0c;行号是从1开…

opengl计算帧率_或许是迄今为止第一篇讲解 fps 计算原理的文章吧

前言fps&#xff0c;是 frames per second 的简称&#xff0c;也就是我们常说的“帧率”。在游戏领域中&#xff0c;fps 作为衡量游戏性能的基础指标&#xff0c;对于游戏开发和手机 vendor 厂商都是非常重要的数据&#xff0c;而计算游戏的 fps 也成为日常测试的基本需求。目前…

041、基于CNN的样式迁移

之——基于CNN的滤镜 目录 之——基于CNN的滤镜 杂谈 正文 1.基于CNN的样式迁移 2.实现 杂谈 通过CNN的特征提取&#xff0c;可以实现将一个图片的样式模式特征迁移到另一张图像上。 正文 1.基于CNN的样式迁移 就是在某些层的输出上用其他的图片进行监督。 2.实现 一般来…

LeetCode 483. 最小好进制(二分查找)

文章目录1. 题目2. 解题1. 题目 对于给定的整数 n, 如果 n 的 k&#xff08;k>2&#xff09;进制数的所有数位全为1&#xff0c;则称 k&#xff08;k>2&#xff09;是 n 的一个好进制。 以字符串的形式给出 n, 以字符串的形式返回 n 的 最小 好进制。 示例 1&#xff…

LeetCode LCS 01. 下载插件

文章目录1. 题目2. 解题1. 题目 小扣打算给自己的 VS code 安装使用插件&#xff0c;初始状态下带宽每分钟可以完成 1 个插件的下载。 假定每分钟选择以下两种策略之一: 使用当前带宽下载插件将带宽加倍&#xff08;下载插件数量随之加倍&#xff09; 请返回小扣完成下载 n …

LeetCode LCS 02. 完成一半题目(计数+排序)

文章目录1. 题目2. 解题1. 题目 有 N 位扣友参加了微软与力扣举办了「以扣会友」线下活动。 主办方提供了 2*N 道题目&#xff0c;整型数组 questions 中每个数字对应了每道题目所涉及的知识点类型。 若每位扣友选择不同的一题&#xff0c;请返回被选的 N 道题目至少包含多少种…

摄像头图像分析目标物体大小位置_单个运动摄像头估计运动物体深度,谷歌挑战新难题...

雷锋网 AI 科技评论按&#xff1a;人类视觉系统有一个我们习以为然但其实极其强大的功能&#xff0c;那就是可以从平面图像反推出对应的三维世界的样子。即便在有多个物体同时移动的复杂环境中&#xff0c;人类也能够对这些物体的几何形状、深度关系做出合理的推测。然而类似的…

LeetCode LCS 03. 主题空间(广度优先搜索BFS)

文章目录1. 题目2. 解题1. 题目 「以扣会友」线下活动所在场地由若干主题空间与走廊组成&#xff0c;场地的地图记作由一维字符串型数组 grid&#xff0c;字符串中仅包含 “0"&#xff5e;"5” 这 6 个字符。 地图上每一个字符代表面积为 1 的区域&#xff0c;其中 …