私は次のクエリを試しました:
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.
私の質問は、なぜこれが許可されないのですか?
各集合体はグループで機能します。クエリごとに定義できるグループは1つだけです。したがって、複数の集計にはサブクエリが必要です。たとえば、最大の部門の従業員数を見つけるには、次のようにします。
SELECT MAX(EmpCount)
FROM (
SELECT COUNT(*) as EmpCount
FROM HR.Employees
GROUP BY
e.Department
) as SubQueryAlias
グループ化する列を定義していないため、の値は次のようになりますSUM()
。MAX()
アップデート
MAX(SUM(e.Empid))
1つだけでなく、2つのグループ化された選択の結果が必要なため、エラーがスローされました。
SUM(x)
単一の値に評価されるためMAX
、その結果には適切ではありません。
このクエリは、機能したとしても、Empidの合計という1つの値のみを返すため、意味がありません。1つのMAX
値に適用される関数は実際には役に立ちません。
これを試して
SELECT MAX(_ID)
FROM (SELECT SUM(e.Empid) _ID FROM HR.Employees e) t
わかった。私は今あなたの質問を受けました。理由は次のとおりです。
集合関数仕様に含まれる値式には、集合関数仕様やサブクエリを含めないでください。値式に外部参照である列参照が含まれている場合、その外部参照が値式に含まれる唯一の列参照になります。
さらに読む:SQL92標準
ラージ