1

我想找到符合标准的字段的平均数量。它嵌入在一个大表中,但我希望这个平均字段在那里而不是在单独的表中进行。

这是我到目前为止所拥有的:

Select....
Avg( (currbal) where (select * from table 
                       where ament2 in ('r1','r2'))
From table 
4

3 回答 3

2

如果您只想对查询的子集进行 AVG,用于case when ... then将不匹配行中的值替换为空值,因为空值会被 avg() 忽略。

Select id,
       sum(something) SomethingSummed,
       avg(case when ament2 in ('r1','r2') then currbal end) CurrbalAveragedForR1R2
  From [table]
 group by id
于 2012-09-19T13:55:30.210 回答
1

您可以将要嵌入到语句中的所有其他总和放在子句AVG内的表引用中。FROM就像是:

SELECT AVG(currbal)
FROM
(
    SELECT * -- other sums
    FROM table
    WHERE ament2 IN ('r1','r2')
) t
于 2012-09-19T13:49:58.757 回答
1

您可以将完整的子选择写入选择列表:

SELECT ...,
       (SELECT AVG(Currbal) FROM Table WHERE ament2 IN ('r1', 'r2')) AS avg_currbal,
       ...
  FROM ...

这是否会完全符合您的要求取决于很多事情。你可能需要把它变成一个相关的子查询;假设“ament2”在表中,目前它不是相关的子查询。

于 2012-09-19T13:51:29.170 回答