栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用MySQL计算中位数的简单方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用MySQL计算中位数的简单方法

在MariaDB / MySQL中:

SELECt AVG(dd.val) as median_valFROM (SELECt d.val, @rownum:=@rownum+1 as `row_number`, @total_rows:=@rownum  FROM data d, (SELECT @rownum:=0) r  WHERe d.val is NOT NULL  -- put some where clause here  ORDER BY d.val) as ddWHERe dd.row_number IN ( FLOOR((@total_rows+1)/2), FLOOR((@total_rows+2)/2) );

史蒂夫·科恩(Steve Cohen)指出,在第一遍之后,@
rownum将包含行的总数。这可用于确定中位数,因此不需要第二遍或连接。

另外

AVG(dd.val)
dd.row_number IN(...)
当记录数为偶数时,用于正确产生中位数。推理:

SELECT FLOOR((3+1)/2),FLOOR((3+2)/2); -- when total_rows is 3, avg rows 2 and 2SELECT FLOOR((4+1)/2),FLOOR((4+2)/2); -- when total_rows is 4, avg rows 2 and 3

最后,MariaDB 10.3.3+包含MEDIAN函数



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377395.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号