web-dev-qa-db-fra.com

Moyenne d'une somme dans une requête

Je voudrais savoir si je peux obtenir la moyenne d'une somme en une seule requête SQL SERVER,

J'ai essayé de le faire avec la demande suivante mais cela ne fonctionne pas:

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

Je pense que votre question a besoin d'un peu d'explication. Si vous souhaitez prendre les sommes regroupées par t.client vous pouvez utiliser:

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

Ensuite, si vous voulez prendre la moyenne de cette somme, faites simplement:

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

Vous ne pouvez cependant pas grouper la requête externe, car cela vous donnera des résultats comme dans la première requête. Les résultats de la requête interne sont déjà regroupés par t.client.

38
Lukasz Lysik

C'est très simple

par ex.

 SELECT t.client, 
         SUM(t.asset)/count(t.asset) AS average
    FROM TABLE t
GROUP BY t.client

en "moyenne" vous obtiendrez la moyenne de "t.asset"

16
Kalpesh Gohel

Si vous essayez d'obtenir les actifs moyens des clients, je pense que je les utiliserais chez CTE. Vous pouvez essayer si SQL 2005 ou supérieur

EDIT: A pris le deuxième groupe, car je pense que vous voulez juste un résultat ici d'actifs moyens

With clientsum (client,assets)
as
(
    SELECT     CLIENT, SUM(asset) AS assets
    FROM         CLIENTTABLE
    GROUP BY CLIENT
)
SELECT avg(assets) AS Expr1
FROM  clientsum
4
Gratzy