我尝试以下查询:嵌套的集合功能
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.
我的问题是,为什么没有这可以吗?
因为你还没有定义任何列被分组,而SUM()
的值等于MAX()
UPDATE
错误被抛出,因为MAX(SUM(e.Empid))
需要两个分组选择的结果,而不仅仅是一。
SUM(x)
评估为单个值,因此它不适用于MAX
的结果。
这个查询没有意义,因为即使它工作了,它也只会返回一个值:Empid的总和。应用于一个值的MAX
函数并不实用。
我知道这个查询没有意义,但我需要知道为什么不允许在内部? – veljasije
也许这可能有助于:http://stackoverflow.com/questions/10747963/why-cant-i-perform-an-aggregate-function-on-an-expression-containing-an-aggrega –
试试这个
SELECT MAX(_ID)
FROM (SELECT SUM(e.Empid) _ID FROM HR.Employees e) t
在组中的每个骨料的作品。每个查询只能定义一个组。所以多个聚合需要子查询。例如,要找到最大部门的员工数量:
好的。我现在得到了你的问题。这是为什么:
The value expression simply contained in set function specification shall not contain a set function specification or a subquery. If the value expression contains a column reference that is an outer reference, then that outer reference shall be the only column reference contained in the value expression.
延伸阅读:SQL 92个标准
拉吉
你到底想达到什么目的? –
这是不允许的,因为它有点没用? – Raj
这是一个简单的查询,从一个大查询近似,我无意尝试这种形式,并得到错误,我改变我的查询来获得结果。但是,后来我想到了这种结构,并不知道为什么会出现这种错误。无论我想要返回什么都没关系,但为什么会引发错误 – veljasije