我有一张表,上面有员工名单以及他们出售的单位数量。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提琴。