为什么在 SQL Server 中我不能这样做:
select sum(count(id)) as 'count'
from table
但是我可以
select sum(x.count)
from
(
select count(id) as 'count'
from table
) x
它们本质上不是同一件事吗?我该如何思考这个问题才能理解为什么第一 block 代码是不允许的?
最佳答案
SUM() 在您的示例中是一个无操作 - COUNT() 的 SUM() 与 COUNT() 的含义相同。因此,您的示例查询似乎都没有做任何有用的事情。
在我看来,嵌套聚合只有在您想应用两种不同的聚合时才有意义 - 意味着在不同的列集上进行 GROUP BY。要指定两个不同的聚合,您需要使用 GROUPING SETS 功能或 SUM() OVER 功能。也许如果你解释一下你想要实现什么目标,有人可以告诉你如何实现。
关于sql - 为什么我不能对包含聚合的表达式执行聚合函数,但可以通过围绕它创建新的 select 语句来执行聚合函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10747963/