sql - 如何从 AVG 中选择 MAX?
问题描述
我正在为我的 SQL 考试练习,但我无法弄清楚以下问题:
“在每位客户支付的平均金额中,显示最高金额。”
因此,要检索支付的平均金额,我会执行以下操作:
SELECT AVG(Amount) AS 'Average amount paid'
FROM Payment;
然后我想从这个平均值列表中检索最高的平均值。我认为以下方法可以解决问题:
SELECT MAX(AVG(Amount)) AS 'Highest average amount paid'
FROM Payment;
这似乎不起作用。我收到以下错误:
无法对包含聚合或子查询的表达式执行聚合函数。
我想要一些帮助。解决这个问题的正确方法是什么?先感谢您。
解决方案
在 SQL Server 中,您可以对记录进行排序并使用TOP 1
以仅保留数量最多的记录:
SELECT TOP 1 Customer_id, AVG(Amount) AS [Average amount paid]
FROM Payment
GROUP BY customer_id
ORDER BY [Average amount paid] DESC;
注意:要使此查询有意义,您需要一个GROUP BY
子句。没有它,它只会返回一条记录,其中包含整个表中的平均付款。
推荐阅读
- ssl - 使用 Wireshark 解密 EAP-TLS 1.3 流量
- javascript - 赛普拉斯如何在不影响间隔的情况下设置日期
- python - 我想在 django html 页面上显示 python opencv 视频我怎样才能实现它
- node.js - 获取具有关注者和关注者的相互列表
- python - 如何过滤熊猫数据框并保留特定元素?
- c# - 如何将 unicode 字符串从 c# 传输到 c/c++ dll
- azure - 获取无效参数:为与代理关联的证书指定的 *** 不正确。Azure 开发运维
- python - 正则表达式始终返回为 NoneType 或根本找不到任何模式
- php - 如何获取控制器模型中的变量?
- delphi - 从汇编例程访问 Delphi 记录、类等之后的第一个字节