SQL 计算平均值时去掉最大值和最小值

要计算平均值时去掉最大值和最小值,可以使用SQL中的子查询和聚合函数结合。以下是具体步骤:

  1. 使用子查询得到最大值和最小值:

使用如下语句得到数据表中列column的最大值和最小值:

SELECT MAX(column), MIN(column) FROM table;
  1. 使用HAVING语句筛选掉最大值和最小值:

把上面子查询的结果作为过滤条件传入HAVING语句中:

SELECT column FROM table
HAVING column NOT IN (SELECT MAX(column) FROM table UNION SELECT MIN(column) FROM table)

该查询语句将返回去掉最大和最小值后的列column的所有行。

  1. 计算平均值:

在第2步查询语句中,我们已经得到了去掉最大和最小值后的所有行,使用聚合函数AVG()求得平均值:

SELECT AVG(column) FROM (
    SELECT column FROM table
    HAVING column NOT IN (SELECT MAX(column) FROM table UNION SELECT MIN(column) FROM table)
) as subquery;

该查询语句将返回去掉最大和最小值后的平均值。

下面给出两条实例:

  1. 假设有以下数据表grade:
id name grade
01 A 85
02 B 90
03 C 92
04 D 80
05 E 70
06 F 95

计算去掉最大和最小值后的平均分数,可以使用以下查询语句:

SELECT AVG(grade) FROM (
    SELECT grade FROM grade
    HAVING grade NOT IN (SELECT MAX(grade) FROM grade UNION SELECT MIN(grade) FROM grade)
) as subquery;

返回结果为:87.33

  1. 假设有以下数据表salary:
id name salary
01 A 6000
02 B 8000
03 C 5000
04 D 6500
05 E 5500
06 F 7000

计算去掉最大和最小值后的平均工资,可以使用以下查询语句:

SELECT AVG(salary) FROM (
    SELECT salary FROM salary
    HAVING salary NOT IN (SELECT MAX(salary) FROM salary UNION SELECT MIN(salary) FROM salary)
) as subquery;

返回结果为:6500.00

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL 计算平均值时去掉最大值和最小值 - Python技术站

(0)
上一篇 2023年3月27日
下一篇 2023年3月27日

相关文章

  • Linux下必须要学的系统安全命令第4/4页

    学习Linux系统安全有许多细节和命令需要掌握。本攻略将详细讲解Linux下必须要学习的系统安全命令,并提供示例。 第4步:检测已安装的包 在Linux系统中,已经安装的软件包可以成为攻击突破口。因此,检测已安装的包是非常重要的。系统管理员通过查看所有安装的包和其版本,可以确定是否存在已知的漏洞和升级是否完成。以下是两个常用方法: 方法一:使用dpkg命令(…

    database 2023年5月22日
    00
  • Redis 存储中文方式

    有时,特殊的一些业务需求,我们会为了方便的情况下,使用中文作为key,正常情况下 ,取数据不会有问题,但是难免会有的时候由于编码格式不一样,而导致取不到数据,这个时候,就需要我们对存储的key做一个特殊的处理。这里我选择使用base64编码处理这种情况。 <!– https://mvnrepository.com/artifact/commons-c…

    Redis 2023年4月11日
    00
  • Windows中Mysql启动失败的完美解决方案

    以下是针对“Windows中Mysql启动失败的完美解决方案”的完整攻略。 问题描述 当我们在 Windows 操作系统中安装 Mysql 数据库时,有可能会遇到启动失败的情况。这种情况通常是由于其他软件占用了3306端口或者mysql的服务启动异常造成的。 解决方法 方法一:查找占用3306端口的进程并关闭 打开命令提示符并输入以下命令: netstat …

    database 2023年5月18日
    00
  • 如何在SQL Server 2008下轻松调试T-SQL语句和存储过程

    下面是详细讲解如何在SQL Server 2008下轻松调试T-SQL语句和存储过程的完整攻略: 1. 在SQL Server Management Studio中启用调试功能 首先,我们需要确认SQL Server Management Studio是否已经启用了调试功能。可以在菜单栏中依次点击 “工具” -> “选项” -> “调试” 来查看…

    database 2023年5月21日
    00
  • 一个简单的SQL 行列转换语句

    下面是一个简单的SQL行列转换的攻略: 什么是SQL行列转换 SQL行列转换指的是将行数据转换为列数据,例如将姓名作为列头,性别作为列数据,从横向的数据表转化为纵向的数据表。 实现SQL行列转换的方法 在SQL中,可以通过使用PIVOT和UNPIVOT函数来进行行列转换。 PIVOT函数 PIVOT函数用于将列数据转换为行数据。该函数需要指定转换后的输出目标…

    database 2023年5月21日
    00
  • Mysql数据库常用命令操作大全

    Mysql数据库常用命令操作大全 一、登录Mysql数据库 在终端输入以下命令登录Mysql数据库: mysql -u username -p password 其中,username为你的用户名,password为你的密码。如果成功登录,你会看到以下界面: Welcome to the MySQL monitor. Commands end with ; …

    database 2023年5月19日
    00
  • mySQL中replace的用法

    MySQL中的REPLACE函数可以替换字符串中的指定字符,其语法如下: REPLACE(str, from_str, to_str) 其中,str表示原始字符串,from_str表示要替换的字符或者字符串,to_str表示替换成的字符或者字符串。 下面分别给出两条示例说明。 示例一 假设我们有以下一张表(表名为user_info): +———+…

    database 2023年5月21日
    00
  • PL/SQL登录Oracle数据库报错ORA-12154:TNS:无法解析指定的连接标识符已解决(本地未安装Oracle需要连接服务器上的)

    问题描述: 当我们以PL/SQL登录远程Oracle数据库时,有时会遇到ORA-12154错误:TNS:无法解析指定的连接标识符。 可能原因: 1.连接字符串中出现了错误或者数据源名称错误 2.没有在本地TNSnames.ora文件中添加数据源的信息 3.TNSnames.ora文件中添加的数据源名称错误 4.没有安装Oracle客户端程序 解决步骤: 1.…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部