当我运行以下 SQL 语句时:
SELECT MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
它返回客户下载的最大总价值,但是如果我尝试通过将其添加到 select 语句来查找该最大值所属的社会安全号码:
SELECT SSN, MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
我收到以下错误:
不是单组群函数
我不明白为什么它会抛出这个错误。谷歌搜索得出以下操作:
从 SELECT 列表中删除组函数或单个列表达式,或者添加包含列出的所有单个列表达式的 GROUP BY 子句
从我看来这句话说的是
- 删除分组功能会使求和值无效
- 删除单个列表达式(SSN)只会给我最大总和
- 不确定第三部分。
有人能指导正确的方向吗?
-Tomek
编辑:该数据库中的TIME指的是下载次数
简单来说,问题是查询中特定 SSN 的 SUM(TIME) 是单个值,因此它反对 MAX,因为它没有意义(单个值的最大值没有意义)。
不确定您正在使用什么 SQL 数据库服务器,但我怀疑您想要一个更像这样的查询(以 MSSQL 背景编写 - 可能需要一些翻译到您正在使用的 SQL 服务器):
SELECT TOP 1 SSN, SUM(TIME)
FROM downloads
GROUP BY SSN
ORDER BY 2 DESC
这将为您提供总时间最长的 SSN 及其总时间。
编辑 - 如果您有多个时间相同并且想要它们全部,您将使用:
SELECT
SSN, SUM(TIME)
FROM downloads
GROUP BY SSN
HAVING SUM(TIME)=(SELECT MAX(SUM(TIME)) FROM downloads GROUP BY SSN))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)