如何使用运算符和AVG()函数查询属性值高于全体平均值的元组
错误点分析
- 表名书写错误:实际表名为
Parts,你的语句中写为Part,会直接抛出表不存在的异常。 - 聚合函数使用位置错误:
AVG()属于聚合函数,无法直接在WHERE子句中调用,因为SQL执行时会先执行WHERE过滤,再做聚合计算,此时AVG(cost)还没有生成结果。 - 条件语法错误:
cost > avg(cost) between 100 and 500是完全不合法的条件拼接,且你的需求中没有要求cost在100到500区间的限制,属于冗余错误逻辑。
正确实现方案
你可以用子查询先计算全表的平均cost,再在外层做过滤,语句如下:
SELECT pcode FROM Parts WHERE cost > (SELECT AVG(cost) FROM Parts);
执行结果说明
样例数据中全表平均cost为300,符合cost>300条件的记录pcode为'4'和'5',和需求匹配。
内容的提问来源于stack exchange,提问作者Sarthak Vats
相关产品推荐
相关产品推荐

