嵌套聚合函数

时间:2020-07-16 18:46:51

标签: sql database oracle aggregate-functions

SELECT MAX(AVG(SYSDATE - inv_date)) FROM invoice;

此查询出了什么问题?

平均返回单个值否 Max需要一个小组来进行工作,以便它执行并给出错误? 请说明工作 这是一个测验问题,根据该问题将不会执行,我想知道为什么它无法执行的原因,我无法弄清楚嵌套的聚合函数是否正确? enter image description here

1 个答案:

答案 0 :(得分:1)

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

如果您很好奇,我不喜欢这种扩展功能。我看不出它能真正解决问题。