回答

收藏

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

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

我有一张表,上面有员工名单以及他们出售的单位数量。
$ x7 y- i4 Y. ^8 x( e! P2 D/ D! a我想获得售出的前25%的平均单位和售出的下25%的平均单位。
2 P' K5 @# a  M我创建了我的数据SLQ小提琴的表示形式0 W3 I* S; g- h1 J. ^
我真的不知道该如何开始?我看到的所有示例都是针对SQL Server而非MySQL。这就是我的想法。8 Z4 W% ~; I1 [
我想要25个百分点,不能限制为25个项目。基本上它将涉及:
( U$ L0 i7 D$ V  {3 }9 C1) #_of_employees = The number of total employees.
$ q: Y, x  A5 e8 p' w$ ~& {9 P2) #_of_employees_in_25_percentile =  #_of_employees*0.259 e  ~5 E% p+ @2 r# d! g
3) Calculate the sum of the units sold by the top/bottom 25 percentile (limit #_of_employees_in_25_percentile)
# X0 b% k7 {$ X6 U, o( o4) Divide the sum by #_of_employees_in_25_percentile to get the average.
, Z6 ]6 c# S! j; r如何在MySQL中有效地完成所有这些工作?6 L, T. I8 n4 I6 V5 Q# H: |% d1 q
               
2 U: Y0 p% D) L3 R& G) P3 J2 S解决方案:1 ^  E: N1 d8 H& r2 t9 f1 `
                3 `  j1 m) g+ X' x* Q
: ^* c# G7 V' r3 Z* f1 V
2 a( {8 R5 k& ~; `$ |
                这是一个解决方案,它使用了我从这个问题中学到的一个诡计。
& i7 r& c( a2 P! m4 a- m9 ?SELECT id, unit_sold, n * 100 / @total AS percentile
0 K9 I  c" h! Q/ m0 mFROM (, q8 k& s: X+ j! q
  SELECT id, unit_sold, @total := @total + unit_sold AS n
5 ]0 K4 p- t8 \4 H/ i' c8 G( H  FROM mydata, (SELECT @total := 0) AS total
2 t/ p$ H* u! H3 s* S5 [  ORDER BY unit_sold ASC: Q5 {1 e' U, r1 i) i# ]  I% O/ W
) AS t$ E9 r- t9 K' S& X4 z( g* M
SQL提琴。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则