Excel下用SQL语句实现AVEDEV函数功能
Excel下AVEDEV函数返回一组数据点到其算术平均值的绝对偏差的平均值。 AVEDEV 是对一组数据中变化性的度量。最常见的应用就是统计平均分差。
但是如果在Excel中写SQL进行一些复杂的统计的时候,SQL没有AVEDEV或者相同功能的函数,这就需要自己写SQL代码去曲线实现相同功能。
先来看看微软的excel帮助文档对AVEDEV函数的说明,https://support.office.com/zh-cn/article/AVEDEV-%E5%87%BD%E6%95%B0-58FE8D65-2A84-4DC7-8052-F3F87B5C6639,其中提到平均偏差的计算公式是
,通俗点讲,就是一组数中,每个数逐个减去这组数的平均值,然后将减数的绝对值全部加起来,最后再除以这组数的个数取得平均值。
知道了如何计算,那也就容易用SQL代码实现了。
假设测试数据为:
| 部门 | 姓名 | 分数 |
| 财务处 | 张三 | 88.95 |
| 办公室 | 李四 | 89.68 |
| 后勤 | 王五 | 85.32 |
| 信息 | 小四 | 90.58 |
| 办公室 | 阿狗 | 86.34 |
| 信息 | 码农 | 89.99 |
| 后勤 | 美女 | 88.88 |
| 财务处 | 陈真 | 90 |
| 后勤 | 煮饭的 | 83.28 |
那么以下代码可以实现统计人数、平均分、最高分、最低分、最大分差:
SELECT 部门, COUNT(*) AS 人数, AVG(分数) AS 平均分, MAX(分数) AS 最高分, MIN(分数) AS 最低分, (MAX(分数)-MIN(分数))AS 最大分差 FROM [Sheet1$] GROUP BY 部门
统计结果如下:
| 部门 | 人数 | 平均分 | 最高分 | 最低分 | 最大分差 |
| 信息 | 2 | 90.285 | 90.58 | 89.99 | 0.59 |
| 办公室 | 2 | 88.01 | 89.68 | 86.34 | 3.34 |
| 后勤 | 3 | 85.82666667 | 88.88 | 83.28 | 5.6 |
| 财务处 | 2 | 89.475 | 90 | 88.95 | 1.05 |
上面的统计都是比较基础的,下面就在上面的SQL语句的基础上,按照平均偏差的计算公式来统计平均分差:
SELECT A.部门, (SUM(ABS(A.分数-B.平均分)))/B.人数 AS 平均分差 FROM [Sheet1$] A LEFT JOIN ( SELECT 部门, COUNT(*) AS 人数, AVG(分数) AS 平均分 FROM [Sheet1$] GROUP BY 部门 ) B ON A.部门 = B.部门 GROUP BY A.部门, B.人数
有点拗,主要是数组中每一个数要减去平均值,所以需要用到join。统计结果如下:
| 部门 | 平均分差 |
| 信息 | 0.295 |
| 办公室 | 1.67 |
| 后勤 | 2.035555556 |
| 财务处 | 0.525 |
看看AVEDEV函数统计的结果看是否一致:
| 部门 | 平均分差 |
| 办公室 | 1.67 |
| 信息 | 0.295 |
| 财务处 | 0.525 |
| 后勤 | 2.035556 |
统计出来平均分差,可以通过join再将开始的最大分差、平均分、人数等数据合并到同一张表,这里就不演示了。
Excel下用SQL语句实现AVEDEV函数功能的更多相关文章
- Excel 中使用sql语句查询
将Excel连接Oracle数据库 Excel选项板中"数据"—"自其他来源"下拉菜单中有有个可以连接其它数据库的选项"来自数据连接向导"和 ...
- 在Excel中使用SQL语句查询和筛选
本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...
- SQL 语句转换格式函数Cast、Convert 区别
SQL 语句转换格式函数Cast.Convert CAST和CONVERT都经常被使用.特别提取出来作为一篇文章,方便查找. CAST.CONVERT都可以执行数据类型转换.在大部分情况下,两者执行同 ...
- Excel数据生成Sql语句的方法
选中想要生成的列,套用表格格式,选中表包含标题的选项确定,然后在最右边的一列第二行处,点击函数功能,选择CONCATENATE,在文本里输入想要的结构即可 代码如下 复制代码 ,=CONCATENA ...
- SQL语句中case函数
case函数,严格的意义上来讲case函数已经试流程控制语句了,不是简单意义上的函数,不过为了方便,很多人将case函数称为流程控制函数. case函数的一般有两种用法:1.case expressi ...
- 通过Excel生成批量SQL语句
项目中有时会遇到这样的要求:用户给发过来一些数据,要我们直接给存放到数据库里面,有的是Insert,有的是Update等等,少量的数据我们可以采取最原始的办法,也就是在SQL里面用Insert int ...
- 在EXCEL中使用SQL语句查询
SQL语句在数据库使用中十分重要. 在EXCEL中可以不打开工作簿,就获取数据,对多工作簿操作很用,也很快. 对大量数据处理,比循环快很多,但是比词典方法还有点距离(可惜我还没有学会词典). 对数据库 ...
- [转]在Excel中使用SQL语句实现精确查询
本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...
- 将Excel导出为SQL语句
需求说明:公司做项目前进行需求分析,确定表结构后需要建表,如果照着表格去敲,那就太麻烦了,所以想到了自动生成SQL语句. 思路大概就是:解析Excel,拼接SQL语句,输出SQL文件. 第三方jar包 ...
随机推荐
- 重装linux后
root帐号解禁vi /etc/pam.d/gdmvi /etc/pam.d/gdm-passwd 两个装机必备软件源http://download1.rpmfusion.org/nonfree/fe ...
- _func_
__func__标识符 引用:http://blog.csdn.net/zhoujunyi/article/details/1572325 __func__是C99标准里面预定义标识符, 它是一个st ...
- C++利用注册表添加桌面右键新建菜单
对于程序员来说,新建一个cpp文件是再频繁不过的事情了. 为了方便,我们习惯在桌面右键新建文件,而不是新建一个文本文档,然后修改后缀名. 百度谷歌查询了一下,终于知道如何添加注册表. 手痒,抽出时间用 ...
- JSP标记
JSP标记是JSP页面中很重要的组成部分,JSP标记包括指令标记.动作标记和自定义标记.其中自定义标记主要讲述与Tag文件有关的Tag标记. 一 指令标记page Page指令标记,简称page指令, ...
- arcgis api for javascript 3.16开发(一)
原来一直都在用Flex开发arcgis的地图接口,用的时间很长,用的习惯也顺手,可Flex这个开发工具已经基本要淘汰了,并且地图借助flash的方式加载在浏览器里已经不能适应webgis的快速开发需求 ...
- ARM中MMU地址转换理解
首先,我们要分清ARM CPU上的三个地址:虚拟地址(VA,Virtual Address).变换后的虚拟地址(MVA,Modified Virtual Address).物理地址(PA,Physic ...
- python datetime date time详解
之前一直被datetime,date,time弄的有点乱,可能是因为看文档每太看明白,找到了两篇文章供大家阅读都是转载的,其中有些名词这里解释一下: 世界协调时间(Universal Time Coo ...
- 从基础开始,从一个SQLHelper开始
最开始考虑的问题有这三点: 1.Access和SQLServer都要能用. 2.尽量简单,清晰. 3.性能不出大问题. public class SQLHelp { #region 私有域 priva ...
- 同花顺面试经验(搜索引擎C++后台研发)
1.为什么要网页查重 ,怎么查重 2.软 硬cache是指什么 3.多线程编程:互斥变量 和 条件变量 函数怎么写 4.网络编程: epoll干什么的,有什么功能 5.网络编程:select 和 ep ...
- Datastage数据装载报错:Consumed more than 1000000 bytes looking for record delimiter
使用Datastage装载数据时报错如下图: 使用ds进行数据传输时,出现上述问题,最终找到了问题的原因: 我所使用的数据文件比较大,上传到服务器的时候传了80%就出现服务器存储空间不够,我删除以前的 ...