【发布时间】:2020-02-18 14:15:23
【问题描述】:
我正在练习我的 SQL 考试,但我无法弄清楚以下问题:
“在每位客户支付的平均金额中,显示最高金额。”
所以要检索支付的平均金额,我会执行以下操作:
SELECT AVG(Amount) AS 'Average amount paid'
FROM Payment;
然后我想从这个平均值列表中检索最高的平均值。我认为以下方法可以解决问题:
SELECT MAX(AVG(Amount)) AS 'Highest average amount paid'
FROM Payment;
这似乎不起作用。我收到以下错误:
无法对包含聚合或子查询的表达式执行聚合函数。
我需要一些帮助。解决这个问题的正确方法是什么?提前谢谢你。
【问题讨论】:
-
使用哪个dbms?
-
抱歉,应该说清楚。我正在使用 Microsoft SQL Server Management Studio。
-
您已经有了一些答案,但是如果您仔细阅读要求,您应该意识到即使您的第一个 sql 查询是错误的。对吗?
-
那么戈登的回答是行不通的。由于某些奇怪的原因,SQL Server 仅支持 FETCH FIRST 与 OFFSET 的组合。请改用 SELECT TOP。
标签: sql sql-server subquery sql-order-by aggregate-functions