如何在SQL Server中执行sum(a)/sum(b)
查询?
我有a = sum(...)
和b = count(...)
的子查询。我需要为主查询中的子查询计算所有记录的avg(all)
。它是avg(all) = sum(a)/sum(b)
。但SQL Server不允许此表达式。怎么计算呢?无法更改主查询中的记录数。
非常感谢您的帮助!
select
sum(a)/sum(b) as avg_x
from
(
select
sum(x) as a,
count(x) as b
from
xyTable
group by
y
)
group by
<any_columns>
错误是:
无法对表达式执行聚合函数 包含聚合或子查询。
答案 0 :(得分:2)
为什么不
select
avg(x) as avg_x
from
xyTable
group by
y
答案 1 :(得分:0)
正如@Chris所说 - 如果您发布了代表性查询,这将有所帮助。
除此之外,我会指出你可以通过用表变量/ cte替换你的样本中的子查询来避免你得到的具体错误/你有什么包含当前子查询的结果。
即:
---create the table variable @myTable
---then SELECT sum(a)/sum(b) from @myTable...
答案 2 :(得分:0)
sum(a)/sum(b)
。问题出在查询的另一部分:sum(min(a))
。