我想找到满足标准的字段的平均数量。它嵌入在一个大表中,但我想在那里使用这个平均字段,而不是在单独的表中进行。
这是我到目前为止所做的:
Select....
Avg( (currbal) where (select * from table
where ament2 in ('r1','r2'))
From table
答案 0 :(得分:2)
如果你想AVG只有一个查询的子集使用case when ... then
来替换非匹配行中的值为null,因为avg()会忽略空值。
Select id,
sum(something) SomethingSummed,
avg(case when ament2 in ('r1','r2') then currbal end) CurrbalAveragedForR1R2
From [table]
group by id
答案 1 :(得分:1)
您可以在AVG
子句中的表引用内放置要嵌入的所有其他总和到FROM
语句中。类似的东西:
SELECT AVG(currbal)
FROM
(
SELECT * -- other sums
FROM table
WHERE ament2 IN ('r1','r2')
) t
答案 2 :(得分:1)
您可以在选择列表中写一个完整的子选择:
SELECT ...,
(SELECT AVG(Currbal) FROM Table WHERE ament2 IN ('r1', 'r2')) AS avg_currbal,
...
FROM ...
这是否能完全符合您的要求取决于许多事情。您可能需要将其转换为相关子查询;假设'ament2'在表中,它目前不是相关的子查询。