MySQL 计算不包含最大值最小值

备注:测试数据库版本为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)

你可能感兴趣的:(#,MySQL,CookBook,MySQL从小工到专家之路,mysql,sql,不包含最大值和最小值,平均值)