一个查询中总和的平均值
Posted
技术标签:
【中文标题】一个查询中总和的平均值【英文标题】:Avg of a Sum in one query 【发布时间】:2010-12-07 01:37:26 【问题描述】:我想知道是否可以在单个 SQL SERVER 请求中获得总和的平均值,
已尝试通过以下请求执行此操作,但不起作用:
SELECT t.client,
AVG(SUM(t.asset)) AS Expr1
FROM TABLE t
GROUP BY t.client
【问题讨论】:
您是否要获取客户资产的平均值? 每个客户资产总和的平均值 【参考方案1】:sum(avg(value) from * tablname
【讨论】:
【参考方案2】:我认为您的问题需要一些解释。如果您想获取按t.client
分组的总和,您可以使用:
SELECT t.client, SUM(t.asset)
FROM the-table t
GROUP BY t.client
那么,如果你想取这个 sum 的平均值,只需做:
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
分组。
【讨论】:
什么是 ?在最后一个括号之后? 是内部查询的昵称。每个内部查询都必须有名称。 我认为您需要将 avg(t.asset) 更改为 avg(inner_query.asset) 添加您需要别名 sum(t.asset) 作为资产【参考方案3】:很简单
例如
SELECT t.client,
SUM(t.asset)/count(t.asset) AS average
FROM TABLE t
GROUP BY t.client
在“平均”中,您将获得“t.asset”的平均值
【讨论】:
哇,一个更简单的解决方案的完美示例。有时我喜欢数学! @Kalpesh 如何获得SUM of AVG of t.asset
.?【参考方案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
【讨论】:
以上是关于一个查询中总和的平均值的主要内容,如果未能解决你的问题,请参考以下文章