mysql - 为什么按以下方式使用 AVG() 和 ROUND() 函数不起作用?

标签 mysql sql

我有一个数据库关系 fake_apps 与假应用程序的价格。现在我正在尝试计算所有价格的平均值的四舍五入值,最多精确到小数点后两位。

我不明白为什么这个查询不起作用。

SELECT ROUND(SELECT AVG(prices) FROM fake_apps,2) AS round_val;

它在 MySQL 8.0.18 上给出如下语法错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use.

最佳答案

您需要两组括号,一组代表 ROUND()一个用于子查询:

SELECT ROUND( (SELECT AVG(prices) FROM fake_apps), 2) AS round_val;

具体来说,SQL 中的子查询需要它们自己的括号。

这里有两种编写查询的替代方法。

输入 ROUND() 子查询中:

SELECT (SELECT ROUND(AVG(prices), 2) FROM fake_apps) AS round_val;

完全放弃子查询:

SELECT ROUND(AVG(prices), 2) AS round_val
FROM fake_apps ;

关于mysql - 为什么按以下方式使用 AVG() 和 ROUND() 函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58570529/

相关文章:

sql - 使用 ARRAY_AGG 获取列中的第一个非 NULL 值是否浪费?

mysql - 带标签和 GROUP_CONCAT 的产品 View

mysql - 如何使用Asp.net从MySql数据库获取salt?

sql - 使用 SQL 进行表修改/重新计算(通过前瞻和回顾进行归约)

c# - Entity Framework 打开连接

mysql - 从另一个表中选择附加字段

MySQL:列出在 99F 学期教授 CS160 部分和 CS340 部分的教师(姓名)

php - 如何显示以下场景的分组结果?

php - 使用 phpseclib 将 mysql gzipped 备份下载到本地系统

sql - 为什么点或句点 ('.' ) 在 SQL Server 中被视为数字?