sql给定数字的频率查询中位数

该文章展示了一个SQL查询,用于从Numbers表中计算所有数字的中位数。首先创建或清空Numbers表,然后插入数据。接着,使用窗口函数对数字按频率排序,找出累积频率等于总频率一半的数字范围,从而求得中位数,并四舍五入到一位小数。
摘要由CSDN通过智能技术生成
Create table If Not Exists Numbers (num int, frequency int)tablespace etc;
Truncate table Numbers;
insert into Numbers (num, frequency) values ('0', '7');
insert into Numbers (num, frequency) values ('1', '1');
insert into Numbers (num, frequency) values ('2', '3');
insert into Numbers (num, frequency) values ('3', '1');

.

中位数 是将数据样本中半数较高值和半数较低值分隔开的值。
编写一个 SQL 查询,解压 Numbers 表,报告数据库中所有数字的 中位数 。结果四舍五入至 一位小数 。

 

select 
    round(avg(num),1) as median 
from
(select
    a.*,
    sum(frequency) over(order by num) as rnk1,
    sum(frequency) over(order by num desc) as rnk2,
    sum(frequency) over() as s
from Numbers a) tmp
where rnk1>=s/2 
and rnk2>=s/2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值