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

要得到一组数据的中位数(例如某个地区或某家公司的收入中位数),我们一般要将这一任务细分为 3 个小任务:

1.将数据排序,并给每一行数据给出其在所有数据中的排名;

2.找出中位数的排名数字;

3.找出中间排名对应的值;

下面以某公司员工月收入为例,示例 MySQL 的一些复杂语句的使用。

方法一

创建测试表

首先创建一个收入表,建表语句为:

%ign%ignore_a_1%re_pre_1%

完成任务 1

将数据排序,并给每一行数据给出其在所有数据中的排名:

SELECT t1.name, t1.income, COUNT(*) AS rankFROM employee AS t1,     employee AS t2WHERE t1.income < t2.income   OR (t1.income = t2.income AND t1.name <= t2.name)GROUP BY t1.name, t1.incomeORDER BY rank;

查询结果为:

492a81f0598eb5622f488d41ac30bdf.png

完成小任务 2

找出中位数的排名数字:

SELECT (COUNT(*) + 1) DIV 2 as rankFROM employee;

查询结果为:

210205328ff0784952f3dfa5b67f612.png

完成小任务 3

SELECT income AS medianFROM (SELECT t1.name, t1.income, COUNT(*) AS rank      FROM employee AS t1,           employee AS t2      WHERE t1.income < t2.income         OR (t1.income = t2.income AND t1.name <= t2.name)      GROUP BY t1.name, t1.income      ORDER BY rank) t3WHERE rank = (SELECT (COUNT(*) + 1) DIV 2 FROM employee)

查询结果为:

835e75d07d4ffd52a5482c8a08e89f3.png

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

php订单系统可以整合支付宝接口 php订单系统可以整合支付宝接口

一、系统设置:用Dreamweaver等网页设计软件在代码视图下打开【dddingdan/config.php】系统设置文件,按注释说明进行系统设置。 二、系统使用:WFPHP在线订单系统是无台后的,不用数据库,也不用安装,解压源码包后,先进行系统设置,然后把整个【dddingdan】文件夹上传到服务器。在网页中要插入订单系统的位置,插入系统调用代码: 注意:id=01就表示使用样式01,如果要使

php订单系统可以整合支付宝接口 0 查看详情 php订单系统可以整合支付宝接口

方法二

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

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

SELECT name, incomeFROM employeeORDER BY income DESC

查询结果为:

f5b6fd78598104e12fb46a8db24c6ed.png

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

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

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

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

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

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 dummyFROM employeeORDER BY income DESC

查询结果如下:

e755927d76f35a4d443d9fed3c4b927.png

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

SET @curr_income := 0;SET @prev_income := 0;SET @rank := 0;SELECT income AS medianFROM (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 t1WHERE t1.rank = (SELECT (COUNT(*) + 1) DIV 2 FROM employee)

查询结果为:

203ebad79cbd1463414c89cf3b5b959.png

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

推荐:《mysql教程》

以上就是在 MySQL 中,如何计算一组数据的中位数的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1078358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 17:22:42
下一篇 2025年12月2日 17:23:04

相关推荐

  • 掌握富文本编辑器内容入库:JavaScript与PHP的协同实践

    本文详细介绍了如何解决使用TinyMCE或CKEditor等富文本编辑器时,HTML标签无法正确保存到数据库的问题。核心解决方案在于客户端JavaScript中利用tinymce.activeEditor.getContent()准确获取编辑器的完整HTML内容,并将其正确传递给服务器。同时,强调了…

    2025年12月10日
    000
  • 如何通过JavaScript和PHP保存富文本编辑器中的HTML内容

    本教程详细阐述了如何解决使用TinyMCE等富文本编辑器时,内容中的HTML标签无法正确保存到数据库的问题。核心方案包括:在前端JavaScript中,利用编辑器API(如tinymce.activeEditor.getContent())获取完整的HTML内容,并通过AJAX提交;在后端PHP中,…

    2025年12月10日
    000
  • 解决MySQL多语言字符集乱码:主机迁移后的乌尔都语显示问题

    本文深入探讨了网站从一个主机迁移到另一个主机后,多语言(如乌尔都语)字符显示异常的问题。尽管服务器和表级字符集设置看似一致,但根本原因在于数据库表列的字符集编码不匹配。文章提供了详细的诊断方法、SQL解决方案以及预防此类问题的最佳实践,确保多语言内容正确无误地显示。 1. 问题背景与现象 在网站进行…

    2025年12月10日
    000
  • 数据库迁移后UTF-8字符显示异常:深入排查与彻底解决指南

    本教程详细解析了网站数据库迁移后,特别是从Namecheap到SiteGround等不同主机环境时,UTF-8字符(如乌尔都语)显示异常的常见原因及解决方案。文章强调了在服务器、数据库、表和尤其重要的表列级别上检查并统一字符集和排序规则的重要性,并提供了具体的排查步骤和SQL修正方法,旨在帮助开发者…

    2025年12月10日
    000
  • 网站迁移后字符乱码?深入探究数据库列编码一致性与解决方案

    网站迁移后出现字符乱码,尤其是非ASCII语言内容显示异常,通常是由于字符编码不一致导致。本文将详细探讨此类问题,指出即使服务器、数据库和表级编码看似正确,仍需检查并确保数据库列级别的字符集和排序规则(Collation)与应用程序端保持完全一致,并提供从HTML、PHP连接到数据库列的全面排查与修…

    2025年12月10日
    000
  • 数据库迁移后多语言字符显示乱码问题:深入解析与解决方案

    数据库迁移后,多语言字符显示乱码是常见问题,尤其是在涉及UTF-8编码的网站。本文将深入探讨此类问题的常见原因,包括HTML页面声明、数据库连接设置以及数据库、表和列的字符集与排序规则,并提供详细的诊断步骤和解决方案,特别强调了易被忽视的列级编码设置,旨在帮助开发者彻底解决字符编码不一致导致的显示异…

    2025年12月10日
    000
  • 数据库迁移后多语言字符乱码解决方案:深度排查与列编码修复

    数据库迁移后,多语言字符显示乱码是常见问题。本文针对此现象,深入分析了从HTML元标签、PDO连接、服务器、数据库、表到表列编码的各个排查环节。重点指出,即使服务器和表级别编码正确,表列的编码不一致也可能导致乱码,并提供了具体的诊断和修复方法,确保字符正确显示。 常见的字符编码检查点 在处理数据库迁…

    2025年12月10日
    000
  • SQL查询:按用户统计每月周六数量的教程

    本教程详细介绍了如何使用SQL查询来统计每个用户在不同月份中发生的周六事件数量。文章首先阐述了通过DAYOFWEEK函数筛选周六并进行初步分组的方法,随后引入了SQL中的“透视”(PIVOT)概念,利用条件聚合和公共表表达式(CTE)将月份数据从行转换为列,最终实现按用户名称展示各月周六数量的报表式…

    2025年12月10日
    000
  • 如何使用SQL统计每月每个用户的周六事件数

    本文详细介绍了如何利用SQL查询,从包含用户和事件日期的数据表中,统计出每个用户在每个月份中发生的周六事件数量。教程涵盖了从识别特定日期(周六)到使用条件聚合和JOIN操作进行数据透视,最终生成按月份列统计的报表,旨在提供清晰、专业的解决方案。 1. 理解问题与数据结构 在数据分析中,我们经常需要对…

    2025年12月10日
    000
  • 解决Laravel中外键约束冲突的全面指南

    本文旨在深入解析Laravel应用中常见的SQLSTATE[23000]: Integrity constraint violation: 1452外键约束错误。我们将探讨导致此错误的核心原因,即子表引用了父表中不存在的记录或外键字段数据类型不匹配。教程将提供详细的诊断方法、验证步骤及针对性解决方案…

    2025年12月10日
    000
  • PHP如何通过Composer管理依赖 PHP包管理的完整使用手册

    composer是php生态系统中管理项目依赖的基石工具,它通过声明式配置简化了第三方库的安装、更新与自动加载。1. 首先在系统安装composer,使其成为全局命令;2. 在项目根目录创建composer.json文件,声明所需依赖及其版本约束(如”monolog/monolog&#8…

    2025年12月10日
    000
  • 解决SQL外键约束失败:1452错误指南

    本文旨在深入解析SQLSTATE[23000]: Integrity constraint violation: 1452外键约束失败错误。该错误通常发生在尝试插入或更新子表数据时,但其关联的父表记录不存在,或者外键与主键的数据类型/长度不匹配。教程将详细阐述错误原因、诊断方法,并提供针对性的解决方…

    2025年12月10日
    000
  • PHP如何创建付费问答社区?专家咨询服务变现

    创建一个基于PHP的付费问答社区,本质上是在搭建一个连接专业知识与需求用户的桥梁,并通过这种连接实现价值交换。这事儿说起来简单,真要落地,得考虑不少细节,从技术选型到商业模式,再到社区运营,环环相扣。 要构建一个这样的平台,核心在于选择一个稳健的PHP框架,比如Laravel或Symfony,它们能…

    2025年12月10日
    000
  • PHP与Redis深度整合:缓存+会话管理 使用PHP操作Redis的高效方法

    php与redis深度整合的核心在于利用redis的内存存储和数据结构构建高效缓存层和可扩展会话管理;2. 数据缓存通过显式控制缓存存取与失效逻辑,优先从redis获取数据以减少数据库压力;3. 会话管理通过将php会话存储至redis实现集中化,支持负载均衡下的会话共享;4. 客户端库选择上,ph…

    2025年12月10日
    000
  • PHP如何操作PDF文件?TCPDF生成PDF文档

    tcpdf的独特优势在于其原生pdf生成能力、强大的多语言支持和高度定制化控制。1. 它直接操作pdf底层指令,而非依赖html渲染,能实现精确布局、条形码、svg图像和数字签名等高级功能;2. 内建对unicode及亚洲语言(如中文、日文、韩文)和从右到左语言(如阿拉伯语、希伯来语)的完善支持,确…

    2025年12月10日
    000
  • PHP跨域请求处理全攻略 CORS与JSONP在PHP中的实现方法与安全考量

    php处理跨域请求的核心是正确实现cors和谨慎使用jsonp;2. cors的关键步骤包括:根据白名单动态设置access-control-allow-origin,处理options预检请求并返回允许的方法和头部,谨慎使用access-control-allow-credentials并配合具体…

    2025年12月10日
    000
  • 使用JavaScript和PHP安全高效地保存富文本编辑器内容到数据库

    本教程详细介绍了如何将TinyMCE或CKEditor等富文本编辑器生成的HTML内容,通过JavaScript和PHP安全地插入到数据库。文章将重点讲解客户端如何正确获取编辑器内容并构建请求数据,以及服务器端如何接收、验证并使用预处理语句防止SQL注入,确保HTML标签完整保存的同时保障数据安全。…

    2025年12月10日
    000
  • 解决Laravel中外键约束错误1452:数据完整性与导入策略

    当在Laravel应用中遇到SQLSTATE[23000]: Integrity constraint violation: 1452错误时,通常表示尝试向子表插入或更新数据时,其外键引用的父表记录不存在。这常见于批量数据导入场景,核心原因在于子表外键字段的值在父表中找不到对应的主键值,或两者数据类…

    2025年12月10日
    000
  • 掌握JavaScript与PHP实现富文本编辑器HTML内容入库

    本教程旨在解决使用TinyMCE或CKEditor等富文本编辑器时,HTML标签内容无法正确保存到数据库的问题。文章将详细阐述如何通过JavaScript获取编辑器的完整HTML内容,并将其安全地发送至PHP后端,最终利用预处理语句将包含HTML标签的数据高效、安全地存储到数据库中,同时提供关键代码…

    2025年12月10日
    000
  • PHP框架底层原理剖析:自己写MVC 从零实现一个简易PHP框架的完整过程

    自己从零开始实现php框架的核心价值在于彻底理解请求处理流程和数据流转机制;2. 一个简易mvc框架必须包含入口文件、自动加载器、请求与响应类、路由器、控制器、模型和视图七大核心组件;3. 构建过程中常见挑战包括路由设计、依赖管理、错误处理及安全性能问题,应通过逐步迭代、引入依赖注入、统一异常处理和…

    2025年12月10日
    000

发表回复

登录后才能评论
关注微信