【发布时间】:2020-11-06 12:42:12
【问题描述】:
SELECT MAX(AVG(SYSDATE - inv_date)) FROM invoice;
这个查询有什么问题?
Avg 返回单个值 no Max需要一个小组来工作,所以它不会执行并给出错误? 请解释工作 这是一个测验问题,根据它不会执行我想知道它执行的原因我不知道允许嵌套聚合函数对吗?
【问题讨论】:
标签: sql database oracle aggregate-functions
SELECT MAX(AVG(SYSDATE - inv_date)) FROM invoice;
这个查询有什么问题?
Avg 返回单个值 no Max需要一个小组来工作,所以它不会执行并给出错误? 请解释工作 这是一个测验问题,根据它不会执行我想知道它执行的原因我不知道允许嵌套聚合函数对吗?
【问题讨论】:
标签: sql database oracle aggregate-functions
Oracle 允许嵌套聚合函数(请参阅documentation)。
但是,它需要GROUP BY。所以这是允许的:
SELECT MAX(AVG(SYSDATE - inv_date))
FROM invoice
GROUP BY Cust_ID;
基本上,这是一条捷径:
SELECT MAX(x)
FROM (SELECT AVG(SYSDATE - inv_date) as x
FROM invoice
GROUP BY Cust_Id
) i;
不过,在您的情况下,没有GROUP BY。 Oracle 不允许在没有 GROUP BY 的情况下嵌套 GROUP BY。
如果您好奇,我不喜欢这种扩展功能。我不认为它实际上解决了问题。
【讨论】:
GROUP BY 的嵌套GROUP BY。它不起作用对我来说似乎有点奇怪,但它会在没有GROUP BY的情况下产生语法错误。