回答

收藏

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

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

我有一张表,上面有员工名单以及他们出售的单位数量。# t. X3 C$ @: }+ b6 G1 q, P1 j
我想获得售出的前25%的平均单位和售出的下25%的平均单位。
% }; S/ X* Y1 n, Q8 N* @3 f我创建了我的数据SLQ小提琴的表示形式) a* A; X1 v; U1 Q: y/ @( m
我真的不知道该如何开始?我看到的所有示例都是针对SQL Server而非MySQL。这就是我的想法。+ q6 t" y, w6 C3 z# H% p
我想要25个百分点,不能限制为25个项目。基本上它将涉及:5 E& j+ F* l. L+ J  _
1) #_of_employees = The number of total employees.
. k. P  x$ Y5 G" p6 N2) #_of_employees_in_25_percentile =  #_of_employees*0.25, \: R2 Q- e5 ~# f" T
3) Calculate the sum of the units sold by the top/bottom 25 percentile (limit #_of_employees_in_25_percentile), n. y1 N6 Y. z+ i2 Q  l0 W5 t
4) Divide the sum by #_of_employees_in_25_percentile to get the average.3 n% t, l: |- w9 q/ o" M( g
如何在MySQL中有效地完成所有这些工作?
- Z# j9 h" H/ l4 M1 y                : z% B+ F) a$ h0 R+ r5 m1 G  X
解决方案:' }5 s$ u6 [3 U" n$ C$ x6 y
               
. S$ a5 H" |  W" Z& t
3 |: a6 \: T. \4 V* N/ v* d0 {) M* L4 p6 k. j
                这是一个解决方案,它使用了我从这个问题中学到的一个诡计。
% F; G. o) q- ~# HSELECT id, unit_sold, n * 100 / @total AS percentile
4 l+ N% w3 J8 a. m1 J! W& ]FROM (2 @5 O2 [- L; i& P  s
  SELECT id, unit_sold, @total := @total + unit_sold AS n
' F; e- s1 V- u& v: b  FROM mydata, (SELECT @total := 0) AS total
# m6 U' Y* W2 |  ORDER BY unit_sold ASC
0 h( {  Q1 J# K) AS t
4 i& O: z+ Z1 m1 A- F$ t; l( BSQL提琴。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则