28

1 回の SQL SERVER リクエストで合計の平均を取得できるかどうかを知りたいのですが、

次のリクエストでそれを実行しようとしましたが、うまくいきません:

  SELECT t.client, 
         AVG(SUM(t.asset)) AS Expr1
    FROM TABLE t
GROUP BY t.client
4

4 に答える 4

47

あなたの質問には少し説明が必要だと思います。グループ化された合計を取得する場合は、t.client次を使用できます。

SELECT t.client, SUM(t.asset)
FROM the-table t
GROUP BY t.client

次に、この合計の平均を取りたい場合は、次のようにします。

SELECT AVG(asset_sums)
FROM
(
    SELECT t.client, SUM(t.asset) AS asset_sums
    FROM the-table t
    GROUP BY t.client
) as inner_query

ただし、最初のクエリのような結果が得られるため、外側のクエリをグループ化することはできません。内部クエリの結果は、既に によってグループ化されていt.clientます。

于 2009-10-15T14:53:30.203 に答える
4

クライアントの平均資産を取得しようとしている場合は、CTE で使用すると思います。SQL 2005以降の場合に試すことができます

編集: ここで平均資産の結果が 1 つだけ必要だと思うので、2 番目のグループを除外しました

With clientsum (client,assets)
as
(
    SELECT     CLIENT, SUM(asset) AS assets
    FROM         CLIENTTABLE
    GROUP BY CLIENT
)
SELECT avg(assets) AS Expr1
FROM  clientsum
于 2009-10-15T14:50:20.130 に答える