千家信息网

mysql中如何求平均值

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要为大家展示了"mysql中如何求平均值",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"mysql中如何求平均值"这篇文章吧。在mysql中,可以
千家信息网最后更新 2025年01月22日mysql中如何求平均值

这篇文章主要为大家展示了"mysql中如何求平均值",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"mysql中如何求平均值"这篇文章吧。

在mysql中,可以利用AVG()函数来求平均值,该函数可以通过计算返回的行数和每一行数据的和,求得指定列数据的平均值;语法"SELECT AVG(column_name) FROM table_name"。

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

在mysql中,可以利用AVG()函数来求平均值。

MySQL AVG()函数是一个聚合函数,它用于计算一组值或表达式的平均值。

AVG() 函数可以通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。

AVG()函数的语法如下:

SELECT AVG(column_name) FROM table_name;

AVG()函数中还可添加DISTINCT运算符来计算不同值的平均值。 例如,如果您有一组值1123,具有DISTINCT操作的AVG()函数将返回不同值的和,即:(1 + 2 + 3)/3 = 2.00

MySQL AVG示例

我们将在示例数据库中使用products表进行演示,下图是products表的结构 -

mysql> desc products;+--------------------+---------------+------+-----+---------+------------------+| Field              | Type          | Null | Key | Default | Extra            |+--------------------+---------------+------+-----+---------+------------------+| productCode        | varchar(15)   | NO   | PRI |         |                  || productName        | varchar(70)   | NO   | MUL | NULL    |                  || productLine        | varchar(50)   | NO   | MUL | NULL    |                  || productScale       | varchar(10)   | NO   |     | NULL    |                  || productVendor      | varchar(50)   | NO   |     | NULL    |                  || productDescription | text          | NO   |     | NULL    |                  || quantityInStock    | smallint(6)   | NO   |     | NULL    |                  || buyPrice           | decimal(10,2) | NO   |     | NULL    |                  || MSRP               | decimal(10,2) | NO   |     | NULL    |                  || stockValue         | double        | YES  |     | NULL    | STORED GENERATED |+--------------------+---------------+------+-----+---------+------------------+10 rows in set

要计算products表中所有产品的平均价格,可以使用AVG函数,如下查询:

SELECT AVG(buyprice) 'Avarage Price' FROM products;

执行上面查询语句,得到以下结果 -

mysql> SELECT AVG(buyprice) 'Avarage Price' FROM products;+---------------+| Avarage Price |+---------------+| 54.395182     |+---------------+1 row in set

请注意,FORMAT函数用于格式化AVG函数返回的平均值。

您可以向SELECT语句添加一个WHERE子句来计算子集值的平均值。 例如,要计算产品线为Classic Cars的产品的平均价格,您可以使用以下查询:

SELECT AVG(buyprice) 'Avarage Classic Cars Price'FROM productsWHERE productline = 'Classic Cars';

执行上面查询语句,得到以下结果 -

mysql> SELECT AVG(buyprice) 'Avarage Classic Cars Price'FROM productsWHERE productline = 'Classic Cars';+----------------------------+| Avarage Classic Cars Price |+----------------------------+| 64.446316                  |+----------------------------+1 row in set

具有DISTINCT的MySQL AVG()函数

有些产品价格相同,可以使用以下查询来检查它:

SELECT COUNT(buyprice) - COUNT(DISTINCT buyprice) FROM products;

执行上面查询语句,得到以下结果 -

mysql> SELECT COUNT(buyprice) - COUNT(DISTINCT buyprice) FROM products;+--------------------------------------------+| COUNT(buyprice) - COUNT(DISTINCT buyprice) |+--------------------------------------------+|                                          2 |+--------------------------------------------+1 row in set

可以使用AVG()函数通过添加DISTINCT运算符来计算不同价格的平均值,如下所示:

SELECT AVG(DISTINCT buyprice) FROM products;

执行上面查询语句,得到以下结果 -

mysql> SELECT AVG(DISTINCT buyprice) FROM products;+------------------------+| AVG(DISTINCT buyprice) |+------------------------+| 54.372870              |+------------------------+1 row in set

结果与使用DISTINCT操作符的平均价格略有不同。

具有GROUP BY子句的MySQL AVG

我们经常使用AVG函数与GROUP BY子句一起计算表中每组行的平均值。

例如,要计算每个产品线的产品的平均价格,您将使用带有GROUP BY子句的AVG函数,如下查询语句:

SELECT productline,       AVG(buyprice) 'Avarage Price'FROM productsGROUP BY productline;

执行上面查询语句,得到以下结果 -

mysql> SELECT productline,       AVG(buyprice) 'Avarage Price'FROM productsGROUP BY productline;+------------------+---------------+| productline      | Avarage Price |+------------------+---------------+| Classic Cars     | 64.446316     || Motorcycles      | 50.685385     || Planes           | 49.629167     || Ships            | 47.007778     || Trains           | 43.923333     || Trucks and Buses | 56.329091     || Vintage Cars     | 46.066250     |+------------------+---------------+7 rows in set

具有HAVING子句的MySQL AVG

您可以使用AVG函数中的HAVING子句中为分组的平均值设置条件。 例如,如果要仅选择产品平均价格大于50的产品线,则可以使用以下查询:

SELECT productline, AVG(buyprice) 'Avarage Price' FROM products GROUP BY productline HAVING AVG(buyprice) > 50;

执行上面查询语句,得到以下结果 -

mysql> SELECT productline, AVG(buyprice) 'Avarage Price' FROM products GROUP BY productline HAVING AVG(buyprice) > 50;+------------------+---------------+| productline      | Avarage Price |+------------------+---------------+| Classic Cars     | 64.446316     || Motorcycles      | 50.685385     || Trucks and Buses | 56.329091     |+------------------+---------------+3 rows in set

MySQL AVG()函数与子查询

您可以在SQL语句中多次使用AVG()函数来计算一组平均值的平均值。 例如,可以计算产品线平均购买价格的平均买价如下:

SELECT AVG(pl_avg) 'Average Product'FROM (    SELECT AVG(buyprice) pl_avg    FROM products    GROUP BY productline) avgs;

执行上面查询语句,得到以下结果 -

mysql> SELECT AVG(pl_avg) 'Average Product'FROM (    SELECT AVG(buyprice) pl_avg    FROM products    GROUP BY productline) avgs;+-----------------+| Average Product |+-----------------+| 51.1553314286   |+-----------------+1 row in set

怎么运行的 -

  • 子查询根据产品线计算平均购买价格。

  • 外部查询计算从子查询返回的产品线的平均购买价格的平均购买价格。

具有NULL值的MySQL AVG函数

AVG()函数忽略计算中的NULL值,请参阅以下示例:

首先,创建一个名为t的新表,其中有两列idvalval列可以包含NULL值。

CREATE TABLE IF NOT EXISTS t(    id  int auto_increment primary key,    val int);

其次,在t表中插入一些行,包括NULL值。

INSERT INTO t(val)VALUES(1),(2),(nulL),(3);

第三,使用AVG()函数计算val列中值的平均值:

SELECT AVG(val) FROM t;

执行上面查询语句,得到以下结果 -

mysql> SELECT AVG(val) FROM t;+----------+| AVG(val) |+----------+| 2.0000   |+----------+1 row in set

该语句按预期返回2,因为在AVG函数的计算中不包括NULL值。

具有控制流函数的MySQL AVG

要计算列的平均值,并在单个语句中有条件地计算相同列的平均值,可以使用具有控制流函数(如IFCASEIFNULLNULLIF等)的AVG函数。

例如,要计算Classic Cars产品线的平均价格与所有产品的平均价格的比例,请使用以下声明:

SELECT AVG(IF(productline='Classic Cars',buyprice,NULL)) / AVG(buyprice) 'Classic Cars/ Products'FROM products;

执行上面查询语句,得到以下结果 -

mysql> SELECT AVG(IF(productline='Classic Cars',buyprice,NULL)) / AVG(buyprice) 'Classic Cars/ Products'FROM products;+------------------------+| Classic Cars/ Products |+------------------------+| 1.1847798580           |+------------------------+1 row in set

如果产品线是Classic Cars,则IF(productline='Classic Cars',buyprice,NULL)表达式返回价格,否则返回NULL

因为AVG函数忽略了计算中的NULL值,所以AVG(IF(productline ='Classic Cars',buyprice,NULL))表达式只计算产品线是Classic Cars的产品的平均价格。

以上是"mysql中如何求平均值"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

函数 平均值 查询 产品 价格 语句 结果 产品线 子句 数据 不同 可以使 内容 用以 示例 篇文章 表达式 相同 一行 可以通过 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 emr数据库 浦东信息化网络技术 北京it软件开发师月薪一般多少 伦茨服务器报警sd6 用友软件开发 上海 内蒙古广电公司网络安全部 服务器主板驱动影响安装系统吗 删除数据库sjk的指令是 龙泉山民宿软件开发 什么是网络安全服务中心 组织开展网络安全自查情况 医疗设备软件开发工程师 怎么打死外挂打到服务器 网络安全意识形态会议记录 网络安全如何避免同质化竞争 计算机三级网络技术易打错 加入我们 软件开发 sqlite导出数据库 刀剑神域服务器地址 数据库的数字化转型的方向 数据库 ttl 屯溪区常见软件开发技术代理商 服务器管理员用户黑屏 王者服务器老升级啥意思 买服务器需要提供什么 sql与数据库入门基础知识 江北区一站式软件开发流程价目表 怎么打死外挂打到服务器 国家反诈中心主机名服务器 配置管理器里没有服务器
0