在 MySQL 中,如何计算一组数据的中位数


当前第2页 返回上一页

835e75d07d4ffd52a5482c8a08e89f3.png

至此,我们就找到了如何从一组数据中获得中位数的方法。

方法二

下面,来介绍另外一种优化排名语句的方法。

我们都知道如何给一组数据做排序操作,在本例中,实现方法如下:

1

2

3

SELECT name, income

FROM employee

ORDER BY income DESC

查询结果为:

f5b6fd78598104e12fb46a8db24c6ed.png

那我们可不可以更进一步,对查询出的结果加一列,这一列的数据为排名呢?

我们可以通过 3 个自定义变量的方法来实现这一目标:

第一个变量用来记录当前行数据的收入

第二个变量用来记录上一行数据的收入

第三个变量用来记录当前行数据的排名

1

2

3

4

5

6

7

8

9

SET @curr_income := 0;

SET @prev_income := 0;

SET @rank := 0;

SELECT `name`,

       @curr_income := income                                      AS income,

       @rank := if(@prev_income != @curr_income, @rank + 1, @rank) AS rank,

       @prev_income := @curr_income                                AS dummy

FROM employee

ORDER BY income DESC

查询结果如下:

e755927d76f35a4d443d9fed3c4b927.png

然后再找出中位数的排名数字,进一步找出收入的中位数:

1

2

3

4

5

6

7

8

9

10

11

SET @curr_income := 0;

SET @prev_income := 0;

SET @rank := 0;

SELECT income AS median

FROM (SELECT `name`,

             @curr_income := income                                      AS income,

             @rank := if(@prev_income != @curr_income, @rank + 1, @rank) AS rank,

             @prev_income := @curr_income                                AS dummy

      FROM employee

      ORDER BY income DESC) AS t1

WHERE t1.rank = (SELECT (COUNT(*) + 1) DIV 2 FROM employee)

查询结果为:

203ebad79cbd1463414c89cf3b5b959.png

至此,我们找了两种方法来解决中位数的问题。撒花。

推荐:《mysql教程》

以上就是在 MySQL 中,如何计算一组数据的中位数的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

mysql触发器怎么写

linux如何查看mysql是否启动?

如何修改mysql的用户名和密码

安装mysql会死机怎么办

史上最简单的mysql数据备份与还原教程

mysql 重命名表的操作方法及注意事项

详解mysql数据库中有关source命令

mysql怎么进去已有数据库

mysql 常用数据库语句 小练习

整理mysql常用查询语句(23种)

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...