四分位数SQL实现

该博客介绍了如何使用SQL来计算数据的四分位数,包括第一四分位数Q1、第二四分位数Q2(中位数)和第三四分位数Q3。通过排序、定位和插值方法,可以确定这些统计指标的位置,从而理解数据分布。内容涉及到统计学中的四分位数概念,并给出了Excel中两种不同的四分位数计算函数QUARTILE.EXC和QUARTILE.INC。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
四分位数(Quartile),即统计学中,把所有数值由小到大排列并分成四等份,处于三个分割点位置的得分就是四分位数
第一四分位数 (Q1),又称'较小四分位数',等于该样本中所有数值由小到大排列后第25%的数字
第二四分位数 (Q2),又称'中位数',等于该样本中所有数值由小到大排列后第50%的数字
第三四分位数 (Q3),又称'较大四分位数',等于该样本中所有数值由小到大排列后第75%的数字
第三四分位数与第一四分位数的差距又称四分位距(InterQuartile Range,IQR)

1:将数据从小到大排序,计为数组a(1 to n),n代表数据的长度
2:确定四分位数的位置b,b的整数部分计为c,b的小数部分计为d
   Q1的位置 b = (n+1) * 0.25
   Q2的位置 b = (n+1) * 0.5
   Q3的位置 b = (n+1) * 0.75
 另外一种方法基于n-1 基础.即
   Q1的位置 b = (n-1) * 0.25
   Q2的位置 b = (n-1) * 0.5
   Q3的位置 b = (n-1) * 0.75
 Excel中有两个四分位数的函数QUARTILE.EXC 和QUARTILE.INC
 QUATILE.EXC 基于n+1 的方法,QUARTILE.INC基于n-1的方法
3:计算
   Q1=a(c)+[a(c+1)-a(c)]*d,Q2与Q3的求法类似 
*/
--SQL实现   
SELECT shopcode,quarter,a+(b-a)*c AS QUARTILE
FROM 
(
	SELECT shopcode,quartername,
	MAX(CASE WHEN id = FLOOR(r) THEN pforce ELSE NULL END) AS a,
	MAX(CASE WHEN id = FLOOR(r)+1 THEN pforce ELSE NULL END) AS b,
	MAX(r-FLOOR(r)) AS c  
	FROM 
	(
		SELECT *,
		ROW_NUMBER() OVER(PARTITION BY shopcode,quartername ORDER BY pforce) AS id,
		(1+COUNT(1) OVER(PARTITION BY shopcode,quartername)) * 0.75 AS r 
		FROM ttt 
	)
	A   GROUP BY shopcode,quartername
) B 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值