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函数功能的更多相关文章

  1. Excel 中使用sql语句查询

    将Excel连接Oracle数据库 Excel选项板中"数据"—"自其他来源"下拉菜单中有有个可以连接其它数据库的选项"来自数据连接向导"和 ...

  2. 在Excel中使用SQL语句查询和筛选

    本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...

  3. SQL 语句转换格式函数Cast、Convert 区别

    SQL 语句转换格式函数Cast.Convert CAST和CONVERT都经常被使用.特别提取出来作为一篇文章,方便查找. CAST.CONVERT都可以执行数据类型转换.在大部分情况下,两者执行同 ...

  4. Excel数据生成Sql语句的方法

    选中想要生成的列,套用表格格式,选中表包含标题的选项确定,然后在最右边的一列第二行处,点击函数功能,选择CONCATENATE,在文本里输入想要的结构即可  代码如下 复制代码 ,=CONCATENA ...

  5. SQL语句中case函数

    case函数,严格的意义上来讲case函数已经试流程控制语句了,不是简单意义上的函数,不过为了方便,很多人将case函数称为流程控制函数. case函数的一般有两种用法:1.case expressi ...

  6. 通过Excel生成批量SQL语句

    项目中有时会遇到这样的要求:用户给发过来一些数据,要我们直接给存放到数据库里面,有的是Insert,有的是Update等等,少量的数据我们可以采取最原始的办法,也就是在SQL里面用Insert int ...

  7. 在EXCEL中使用SQL语句查询

    SQL语句在数据库使用中十分重要. 在EXCEL中可以不打开工作簿,就获取数据,对多工作簿操作很用,也很快. 对大量数据处理,比循环快很多,但是比词典方法还有点距离(可惜我还没有学会词典). 对数据库 ...

  8. [转]在Excel中使用SQL语句实现精确查询

    本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...

  9. 将Excel导出为SQL语句

    需求说明:公司做项目前进行需求分析,确定表结构后需要建表,如果照着表格去敲,那就太麻烦了,所以想到了自动生成SQL语句. 思路大概就是:解析Excel,拼接SQL语句,输出SQL文件. 第三方jar包 ...

随机推荐

  1. [leetcode]_Symmetric Tree

    第二道树的题目,依旧不会做,谷歌经验. 题目解释: give you a tree , judge if it is a symmetric tree. 思路:我以为要写个中序遍历(进阶学习非递归算法 ...

  2. 利用脚本修改SQL SERVER排序规则

    利用脚本修改SQL SERVER排序规则 编写人:CC阿爸 2014-3-1 l  今年的一项重要工作是对公司所用系统进行繁简的转换,程序转成简体基本很容易解决,但数据库转换成简体,就没那么容易了.经 ...

  3. linux常用命令--ps、netstat、find

     一.ps 1.1ps命令简介 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那 ...

  4. PHP MYSQLI中事务处理

    MYSQL事务处理让所有sql语句执行成功后才去处理,如果有一条没有成功或者报错就会回滚事务,防止敏感操作处理失败.MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其它类型是不支持的 ...

  5. php header 函数详解

    网页的缓存是由 HTTP消息头中的“Cache-control”来控制的,常见的取值有private.no-cache.max-age.must- revalidate等,默认为private.其作用 ...

  6. Ubuntu 14.04 安装flash插件

    分别tar.gz和apt-get方法 第一种: adboe官网下载tar.gz,进入terminal 1.解压缩包,输入命令“tar -zxvf 软件包名字” 2.拷贝插件到mozilla目录,输入命 ...

  7. delphi函数调用约定

    指令 参数存放位置 参数传递顺序 参数内存管理 使用地方 Register CPU寄存器 从左到右 被调用者 默认,published属性存取方法必须使用 Pascal 栈 从左到右 被调用者 向后兼 ...

  8. jQuery学习笔记(3)

    children():只考虑子元素而不考虑其他后代元素 <html xmlns="http://www.w3.org/1999/xhtml"> <head run ...

  9. ok6410的DMA裸机总结

    1.为何使用DMA:为了提高CPU的工作效率,避免多余的等待时间 2.关于DMA控制器:(1)通道数:2440有4个通道,6410有4个DMA控制器(初始化的时候要选择),32个通道.210有两种DM ...

  10. 不复杂的Autofac注入

    private static void SetAutofacWebAPI() { var builder = new ContainerBuilder(); #region 配置注册方法 string ...