mysql group by 中位数_SQL 计算中位数 - SQL必知必会的个人空间 - OSCHINA - 中文开源技术交流社区...

文章介绍了如何使用SQL在MySQL中计算中位数,提供了两种解决方案:一种是通过排序和编号找到中位数,另一种是利用margin和equal统计计算。文章通过示例详细解释了每种方法的实现过程,并给出了相应的SQL代码。
摘要由CSDN通过智能技术生成

笔者在 HackerRank 上的 SQL 编程挑战看到这题,有 96% 的提交成功率。实际上,使用 SQL 求中位数并不简单。

问题描述

我们先来看关于“中位数”的解释:

中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中位数。如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数。

再来看几个具体的例子:

对于 “1,2,3,4,5” ,总共有 5 个数,居中的数是 3 ,因此这组数据的中位数是 3 。

对于“1,2,3,4,5,6”,共有 6 个数,居中的是 3 和 4,因此这组数的中位数是 3 和 4 的平均数 3.5 。

对于“3,3,3,3,100,100,100”,总共有 7 个数,居中的是 3,因此 3 是这组数据的中位数。

解决方案

解决方案主要有两种,第一种方案是对数据按大小排序后找到居中的值,再求值的平均数;第二种解决方案计算出每个数与其它数的相对位移(两数相减,结果为正则作 1,结果为负作 0,相等是 0),再对位移的结果加和,通常得到最小的加和结果的数就在居中的位置。

先来看比较简单的解决方案,也就是第一种。具体的做法是:

对给定的一组数据按从到大排序;

对排序后的数据编号,序号从 1 开始;

假设这组数据的总数是 N&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值