2009-10-15 15 views
13

Vorrei sapere se posso ottenere la media di una somma in una singola richiesta SQL SERVER,Media di una somma in una query

hanno cercato di farlo con la seguente richiesta ma non funziona :

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

Stai cercando di ottenere il giudizio medio dei clienti attivi? – Gratzy

+0

La media della somma delle attività di ogni cliente – Roch

risposta

25

Penso che la tua domanda ha bisogno di un po 'di spiegazione. Se si vuole prendere le somme raggruppati per t.client è possibile utilizzare:

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

Quindi, se si vuole prendere la media di questo sume, basta fare:

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 

Non si può tuttavia gruppo la query esterna, perché questo ti darà risultati come nella prima query. I risultati della query interna sono già raggruppati per t.client.

+0

cos'è? dopo l'ultimo Parenthese? – Roch

+0

È un soprannome per la query interna. Ogni query interna deve avere il nome. –

+2

Penso che sia necessario cambiare avg (t.asset) in avg (inner_query.asset) – Gratzy

4

Se si sta cercando di ottenere le risorse medie dei clienti, penso che vorrei utilizzare a CTE. Si può provare se SQL 2005 o superiore

EDIT: ha preso il secondo gruppo da fuori come credo che si desidera solo un risultato qui dell'attivo medio

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

è molto semplice

ad es.

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

in "media" si otterrà media di "t.asset"

+0

Wow, perfetto esempio di una soluzione molto più semplice. A volte amo la matematica! –

Problemi correlati