2009-10-15 168 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