2KB项目,专业的源码交易网站 帮助 收藏 每日签到

怎么运用容易的 SQL 查询在 MySQL 入彀算中位数

  • 时间:2019-09-11 17:24 编辑:2KB 来源:2KB.COM 阅读:279
  • 扫一扫,手机访问
  • 分享
摘要:英文原文:How to calculate median value in MySQL using a *** SQL query                         甚么是中位数? 数值型数组的中位数是在数据排序后位于数组两

英文原文:How to calculate median value in MySQL using a *** SQL query                        

甚么是中位数?

数值型数组的中位数是在数据排序后位于数组两头项的值。假如数组有偶数个元素,中位数就是最两头的两个数值的均匀数。

中位数关于了解“我的值能否位于两头?”十分有效。比方,我在黉舍的最初一次测验中得了 D (或 80),那末我的在全班同窗中的排名能否在前 50%?

举一个详细的例子,我们看看从黉舍的这些测试分数中找到中位数的进程:[55, 80, 95, 100, 99, 70, 60]。

  1. 起首,对数组排序:[55, 80, 95, 100, 99, 70, 60]  ===> [55, 60, 70, 80, 95, 99, 100].

  2. 这个数组包括 7 个元素,不是偶数,所以中位数是 (7 / 2 + 1),即第 4 项的值 => 80。

在 MySQL 入彀算某列数据的中位数

很不幸,MySQL 并未内置盘算列数据中位数的函数。因而,我们需求本人创立查询。

假设我们想从“grades”列中查找中位数。来看看我们要创立的查询是甚么算法:

  1. 对“grades”排序并为排序后的每行附加序号(行号)

  2. 假如总行数是奇数,找到位于有序列表两头地位的值。

  3. 假如总行数是偶数,找到位于有序列表两头两个地位的值。

  4. 盘算上面第 (3) 步和第 (4) 获得值的均匀值。

  5. 前往这个均匀值,它就是中位数。

那末如许的查询该怎样写?

SET @rownum := -1;
 
SELECT
   AVG(g.grade)
FROM
   (SELECT @rowindex:=@rowindex + 1 AS rowindex,
           grades.grade AS grade
    FROM grades
    ORDER BY grades.grade) AS g
WHERE
t.rowindex IN (FLOOR(@rowindex / 2) , CEIL(@rowindex / 2));

说明一下:

  1. 先从外部的一个子查询开端 —— 为 @rowindex 赋值的子查询会为每一个成果付与一个自增后的序号,并对 grades 排序 [译者注:按逻辑和代码是先排序再付与序号]。

  2. 有了排好序的成果列表以后,外层查询会获得位两头地位的值。假如数组元素是奇数个,两个值都是取的位于正中阿谁值。

  3. 然后,外层查询的 SELECT 子句前往上述两个值的均匀值作为中位数。

你看,这并非容易的运转 MEDIAN(column_name),但它可行。我们等待 MySQL 会决议将这一功用添加到内置产物中,这将简化获得中位数的查询。

本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。                        2KB翻译任务按照 CC 协定,假如我们的任务有进犯到您的权益,请实时联络我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品在家创业在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖网站交易广告买卖站长培训建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|互联网】深入理解 Rust 的动态分派模型(2020-03-30 04:08)
【计算机/互联网|】mysql 索引过长1071-max key length is 767 byte(2020-03-16 04:01)
【计算机/互联网|】maven build卡死在Downloading的解决方法(2020-03-08 12:13)
【计算机/互联网|】Eclipse里的Java项目按住Ctrl + 左键不能进行跳转问题(2020-03-06 15:32)
【计算机/互联网|互联网】Ceph 性能调优(2020-03-03 23:56)
【计算机/互联网|】百度推送返回状态说明(2020-02-22 18:38)
【计算机/互联网|】tomcat建立示例java web项目(2020-02-15 11:27)
【计算机/互联网|】springboot打包成war,部署到tomcat访问404的问题 (2020-02-13 10:54)
【行业动态|】CES 2020教会了我们关于今年手机的知识:更便宜的可折叠材料,5G及更多(2020-02-10 01:32)
【行业动态|】谷歌Chrome的隐私变化将在今年晚些时候登陆网络(2020-02-10 01:28)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部