一个查询中求和的平均值

31

我想知道是否可以在一个SQL SERVER请求中获得一个总和的平均值,

尝试使用以下请求进行操作,但它无法正常工作:

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

你是在尝试获取客户资产的平均值吗? - Gratzy
每个客户资产总和的平均值 - Roch
4个回答

51

我认为您的问题需要一些解释。如果您想按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 进行了分组。


最后一个括号后面的问号是什么意思? - Roch
这是内部查询的别名。每个内部查询都必须有名称。 - Lukasz Lysik
2
我认为你需要将 avg(t.asset) 更改为 avg(inner_query.asset)。 - Gratzy
2
你需要将sum(t.asset)重命名为asset。 - Gratzy

21
很简单,例如:

它非常简单

例如。

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

在“average”中,您将得到“t.asset”的平均值。

3
哇,这是一个非常简单解决方案的完美例子。有时我喜欢数学! - Nathan Dobie
1
@Kalpesh 怎样获得t.asset的平均值之和? - Sanjiv

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

0
sum(avg(value) from * tablname

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接