备注:测试数据库版本为MySQL 8.0
如需要scott用户下建表及录入数据语句,可参考:
scott建表及录入数据sql脚本
一.问题
计算平均数,但希望排除最大和最小值,以减少数据畸偏照成的影响。
例如,计算除最高和最低工资外的所有职员的平均工资。
二.解决方案
通过not in剔除最大和最小值即可
select avg(sal)
from emp
where sal not in (
(select min(sal) from emp),
(select max(sal) from emp)
);
测试记录
mysql> select avg(sal)
-> from emp
-> where sal not in (
-> (select min(sal) from emp),
-> (select max(sal) from emp)
-> );
+-------------+
| avg(sal) |
+-------------+
| 1935.416667 |
+-------------+
1 row in set (0.00 sec)