回答

收藏

获得最高和最低的第25个百分位数平均值

技术问答 技术问答 531 人阅读 | 0 人回复 | 2023-09-14

我有一张表,上面有员工名单以及他们出售的单位数量。
3 O& a# f( d& N: F3 q3 R' }- ^我想获得售出的前25%的平均单位和售出的下25%的平均单位。0 _  {& V! M5 c: }; j4 n7 o, v! S7 q
我创建了我的数据SLQ小提琴的表示形式% k6 T# M& R4 Q# O
我真的不知道该如何开始?我看到的所有示例都是针对SQL Server而非MySQL。这就是我的想法。) l" |, Z8 e8 V% e
我想要25个百分点,不能限制为25个项目。基本上它将涉及:
& a; t" L2 W; ~1) #_of_employees = The number of total employees.* K. y7 e: o8 J# [
2) #_of_employees_in_25_percentile =  #_of_employees*0.25
( w* R( t  e. E" \" v3) Calculate the sum of the units sold by the top/bottom 25 percentile (limit #_of_employees_in_25_percentile)2 p! W4 G6 s( B. K' ^( ~
4) Divide the sum by #_of_employees_in_25_percentile to get the average./ [/ x& K4 m' G& }8 p6 {" j
如何在MySQL中有效地完成所有这些工作?8 r$ m' ^( D& s) o9 A: E& r
               
. }7 g1 ~/ s; C1 ?: h' i解决方案:; T. `9 `9 `8 H" U' u9 S/ u0 E% M
               
5 o0 M8 B" ~; m0 \7 X8 s7 a7 M2 e
0 ^6 T' c/ e7 K4 ^$ K+ z% t4 P! `: H4 d( P" o
                这是一个解决方案,它使用了我从这个问题中学到的一个诡计。
7 h$ c6 E* a4 @" U- y/ D, [% aSELECT id, unit_sold, n * 100 / @total AS percentile
+ ]6 O8 q8 w, ^- Q$ r0 p# mFROM (
! i$ Z- Z- p/ l  M7 Y- X  SELECT id, unit_sold, @total := @total + unit_sold AS n
) ^- G$ Q6 w7 j) F; a. K  FROM mydata, (SELECT @total := 0) AS total
/ \( x3 T& R% Q% y1 f* E/ B' a0 u7 a  ORDER BY unit_sold ASC
1 K# b7 p, H1 ]7 W$ z) AS t
5 ^1 P6 T  n+ E* G6 f0 h  u( @+ K' ]; rSQL提琴。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则