2009-10-15 116 views
13

我想知道如果我能在一個單獨的SQL服務器請求獲得一個總和的平均值,平均在一個查詢

試圖與下面的要求做,但它不工作:

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

你試圖讓客戶資產的魅力? – Gratzy 2009-10-15 14:46:57

+0

平均每個客戶的資產總和 – Roch 2009-10-15 14:47:51

回答

25

的只是一個結果,在這裏,我覺得你的問題需要一點解釋。如果你想利用通過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

+0

是什麼?最後一個括號後? – Roch 2009-10-15 14:58:44

+0

這是內部查詢的暱稱。每個內部查詢都必須有名稱。 – 2009-10-15 15:00:06

+2

我認爲你需要改變avg(t.asset)到avg(inner_query.asset) – Gratzy 2009-10-15 15:02:59

4

如果您試圖獲得客戶的平均資產,我想我會在CTE中使用。你可以嘗試,如果SQL 2005或更高

編輯: 接過第二組通過了,我想你想的平均資產

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

其非常簡單

例如,

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

「平均」,你會得到「t.asset」的平均

+0

哇,一個更簡單的解決方案的完美例子。有時我喜歡數學! – 2017-04-12 17:56:57