回答

收藏

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

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

我有一张表,上面有员工名单以及他们出售的单位数量。4 ]/ {6 ^6 k9 K: R% T
我想获得售出的前25%的平均单位和售出的下25%的平均单位。0 ^$ u, z* t. d& N' c# Z/ f
我创建了我的数据SLQ小提琴的表示形式# d1 Z# e( H& V  q& h9 t7 j  q
我真的不知道该如何开始?我看到的所有示例都是针对SQL Server而非MySQL。这就是我的想法。
7 m3 N, ?8 i- U: ?: ]我想要25个百分点,不能限制为25个项目。基本上它将涉及:
6 i: L! S3 T/ j2 Z6 t* F1) #_of_employees = The number of total employees.6 E7 ~6 ]2 \% F: S
2) #_of_employees_in_25_percentile =  #_of_employees*0.258 x6 C0 f0 P' e$ y" U
3) Calculate the sum of the units sold by the top/bottom 25 percentile (limit #_of_employees_in_25_percentile)
2 [% x" ~( u; r$ z4) Divide the sum by #_of_employees_in_25_percentile to get the average.
5 d* p1 d. A! @) ^- J4 A9 v$ ]& O如何在MySQL中有效地完成所有这些工作?- q0 }5 q9 \& m7 H9 i1 g2 X: Q
                % @3 y8 c5 q7 L' N1 Z9 A8 |
解决方案:
% w; T3 s. j2 O! o  Y' l8 Y# z                9 _+ m1 ]( }' q+ Z$ ]+ A9 y$ B

1 C! C# ~* V( ]+ C# t, \
/ `0 a# U" D- t: K( n* v( F' s! N                这是一个解决方案,它使用了我从这个问题中学到的一个诡计。
  N2 D) w) Q, ^4 dSELECT id, unit_sold, n * 100 / @total AS percentile0 ^% P" c1 F$ \( Z$ E" O/ \
FROM (
, @' D3 G7 A3 T9 n6 c  SELECT id, unit_sold, @total := @total + unit_sold AS n; d6 s; n8 d/ \7 y* {
  FROM mydata, (SELECT @total := 0) AS total" v% D, e, x  j5 O  v
  ORDER BY unit_sold ASC8 _2 ]4 F0 `5 b3 l. l1 Z! E& Q
) AS t, r- M! s) C2 ?9 H
SQL提琴。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则