我尝试了以下查询:
SELECT
MAX(SUM(e.Empid))
FROM HR.Employees
并得到以下错误:
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
我的问题是为什么不允许这样做?
我尝试了以下查询:
SELECT
MAX(SUM(e.Empid))
FROM HR.Employees
并得到以下错误:
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
我的问题是为什么不允许这样做?
每个聚合都适用于一个组。每个查询只能定义一个组。所以多个聚合需要子查询。例如,要查找最大部门的员工数量:
SELECT MAX(EmpCount)
FROM (
SELECT COUNT(*) as EmpCount
FROM HR.Employees
GROUP BY
e.Department
) as SubQueryAlias
由于您尚未定义任何要分组的列,因此 的值SUM()
等于MAX()
更新
引发错误,因为MAX(SUM(e.Empid))
需要两个分组选择的结果,而不仅仅是一个。
SUM(x)
评估为单个值,因此它不适合它MAX
的结果。
这个查询没有任何意义,因为即使它有效,它也只会返回一个值:Empid 的总和。应用于一个值的MAX
函数并不是真正有用的。
尝试这个
SELECT MAX(_ID)
FROM (SELECT SUM(e.Empid) _ID FROM HR.Employees e) t
好的。我现在收到你的问题了。原因如下:
仅包含在集合函数规范中的值表达式不应包含集合函数规范或子查询。如果值表达式包含作为外部引用的列引用,则该外部引用应是值表达式中包含的唯一列引用。
进一步阅读:SQL 92 标准
拉吉