0

私は次のクエリを試しました:

SELECT 
    MAX(SUM(e.Empid))
FROM HR.Employees

次のエラーが発生しました:

Cannot perform an aggregate function on an expression containing an aggregate or a subquery.

私の質問は、なぜこれが許可されないのですか?

4

6 に答える 6

6

各集合体はグループで機能します。クエリごとに定義できるグループは1つだけです。したがって、複数の集計にはサブクエリが必要です。たとえば、最大の部門の従業員数を見つけるには、次のようにします。

SELECT  MAX(EmpCount)
FROM    (
        SELECT  COUNT(*) as EmpCount
        FROM    HR.Employees
        GROUP BY
                e.Department
        ) as SubQueryAlias
于 2013-01-21T11:04:16.877 に答える
1

グループ化する列を定義していないため、の値は次のようになりますSUM()MAX()

アップデート

MAX(SUM(e.Empid))1つだけでなく、2つのグループ化された選択の結果が必要なため、エラーがスローされました。

于 2013-01-21T10:39:26.833 に答える
0

SUM(x)単一の値に評価されるためMAX、その結果には適切ではありません。

于 2013-01-21T10:37:41.720 に答える
0

このクエリは、機能したとしても、Empidの合計という1つの値のみを返すため、意味がありません。1つのMAX値に適用される関数は実際には役に立ちません。

于 2013-01-21T10:37:58.423 に答える
0

これを試して

SELECT MAX(_ID)
FROM (SELECT SUM(e.Empid) _ID FROM HR.Employees e) t
于 2013-01-21T10:48:59.043 に答える
0

わかった。私は今あなたの質問を受けました。理由は次のとおりです。

集合関数仕様に含まれる値式には、集合関数仕様やサブクエリを含めないでください。値式に外部参照である列参照が含まれている場合、その外部参照が値式に含まれる唯一の列参照になります。

さらに読む:SQL92標準

ラージ

于 2013-01-21T11:05:22.100 に答える