2009-10-15 12 views
13

me gustaría saber si puedo obtener el promedio de una suma en una petición SQL SERVER sola,medio de una suma en una consulta

han tratado de hacerlo con la siguiente petición, pero no funciona :

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

¿Estás tratando de obtener el promedio de los activos de los clientes? – Gratzy

+0

La media de la suma de los activos de cada cliente – Roch

Respuesta

25

Creo que su pregunta necesita un poco de explicación. Si usted quiere tomar las sumas agrupados por t.client puede utilizar:

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

Entonces, si usted quiere tomar el promedio de este Sume, basta con:

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 

No se puede sin embargo grupo la consulta externa, porque esto le dará resultados como en la primera consulta. Los resultados de la consulta interna ya están agrupados por t.client.

+0

¿Qué es? después del último Parenthese? – Roch

+0

Es un apodo para la consulta interna. Toda consulta interna debe tener el nombre. –

+2

Creo que necesitas cambiar avg (t.asset) a avg (inner_query.asset) – Gratzy

4

Si está tratando de obtener los activos medios de los clientes que creo que usaría en CTE. Puede probar si SQL 2005 o mayor

EDIT: Tomó el segundo grupo por fuera como yo creo que usted quiere sólo un resultado aquí de los activos promedio

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

Es muy simple

por ej.

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

en "promedio" obtendrá promedio de "t.asset"

+0

Wow, ejemplo perfecto de una solución mucho más fácil. ¡A veces me encantan las matemáticas! –

Cuestiones relacionadas