MySQL查中位数数据

编程入门 行业动态 更新时间:2024-10-11 15:17:22

MySQL查<a href=https://www.elefans.com/category/jswz/34/1769329.html style=中位数数据"/>

MySQL查中位数数据

MySQL查中位数数据

法一 :利用having的筛选功能将集合里的元素按照大小分为上半部分和下半部分两个子集,同时让这2个子集共同拥有集合正中间的元素,将上下部分集合平均然后得中值
select ROUND(avg(distinct score),2) from (
select t1.scorefrom table_name t1,table_name t2# 如果需要加其他条件,t1和t2都需要加     # 例如 WHERE t1.area = '001' and t2.area = '001'group by t1.scorehaving sum(case when t2.score >= t1.score then 1 else 0 end)>= count(*) / 2.0and sum(case when t2.score <= t1.score then 1 else 0 end)>= count(*) / 2.0) tmp
法二 : 
SELECT score AS median
FROM (SELECT t1.name, t1.score, COUNT(*) AS rankFROM table_name AS t1,table_name AS t2WHERE t1.score < t2.scoreOR (t1.score = t2.score AND t1.name <= t2.name)GROUP BY t1.name, t1.scoreORDER BY rank) t3
WHERE rank = (SELECT (COUNT(*) + 1) DIV 2 FROM table_name)
法三:只能用于Mysql 8
select round(sum(score) / count(*),2) as midean
from (select score,row_number() over (order by score desc) as desc_Math,row_number() over (order by score asc)   as asc_Mathfrom table_name) as order_table
where asc_Math in (desc_Math, desc_Math + 1, desc_Math - 1);

更多推荐

MySQL查中位数数据

本文发布于:2024-03-04 19:14:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1710160.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中位数   数据   MySQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!