我有一个与假应用价格的数据库关系fake_apps。现在,我试图计算所有价格的平均舍入值,直到小数点后两位。
我不明白为什么这个查询不起作用。
SELECT ROUND(SELECT AVG(prices) FROM fake_apps,2) AS round_val;
它在MySQL 8.0.18上给出语法错误,如下所示:
错误1064(42000):您的SQL语法有错误;检查 与您的MySQL服务器版本相对应的手册 使用的语法。
答案 0 :(得分:2)
您需要两组括号,一组用于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 ;