为什么在PostgreSQL中使用窗口函数时可以嵌套聚合函数?

为什么在PostgreSQL中使用窗口函数时可以嵌套聚合函数?,postgresql,Postgresql,我正试图更好地理解窗口函数,但我不明白为什么不能正常运行嵌套聚合函数,但在使用窗口函数时可以 这是我正在使用的DBFIDLE: 在运行window函数之前,基本上会对查询中的所有其他内容进行评估(JOIN和groupby) 因此,我相信窗口函数处理的数据是这样的(分组后): 还是像这样 那么为什么我可以这样做:SUM(COUNT(voates.option_id))OVER(),但是如果没有OVER(),我就做不到 据我所知,OVER()使SUM(COUNT(vots.option_id))

我正试图更好地理解窗口函数,但我不明白为什么不能正常运行嵌套聚合函数,但在使用窗口函数时可以

这是我正在使用的DBFIDLE:

在运行window函数之前,基本上会对查询中的所有其他内容进行评估(
JOIN
groupby

因此,我相信窗口函数处理的数据是这样的(分组后):

还是像这样

那么为什么我可以这样做:
SUM(COUNT(voates.option_id))OVER()
,但是如果没有
OVER()
,我就做不到

据我所知,
OVER()
使
SUM(COUNT(vots.option_id))
在这个相关的数据集上运行,但它仍然是一个嵌套的聚合函数

我错过了什么


多谢各位

因为窗口函数是在group by之后应用的。但是没有窗口函数的聚合函数也是如此,对吗?这可能会有帮助:谢谢你,尼克,但不是真的:(我知道不能嵌套聚合函数,也不能嵌套窗口函数。我想了解为什么窗口函数的处理方式不同于聚合本身。我上面关于窗口数据的数据图是否正确?我为窗口函数在原始数据中“看到”的数据添加了一个潜在的替代选项post,请让我知道这是否有帮助。因为窗口函数是在group by之后应用的。但是没有窗口函数的聚合函数也是如此,对吗?这可能会有帮助:谢谢Nick,但不是真的:(我知道不能嵌套聚合函数,也不能嵌套窗口函数。我想了解为什么窗口函数的处理方式不同于聚合本身。我上面关于窗口数据的数据图是否正确?我为窗口函数在原始数据中“看到”的数据添加了一个潜在的替代选项张贴,请让我知道,如果这有帮助。