聚合函数-Avg在我的sql查询中不起作用

聚合函数-Avg在我的sql查询中不起作用,sql,oracle,plsql,Sql,Oracle,Plsql,在我的查询中,我需要显示日期和平均年龄: SELECT (SYSDATE-rownum) AS DATE, avg((SYSDATE - rownum)- create_time) as average_Age FROM items group by (SYSDATE-rownum) 但我的平均年龄输出是不正确的。它只是简单地计算/显示(SYSDATE-rownum)-create\u time的输出,而不是计算它们的平均值,尽管我使用了:avg((SYSDATE-rownum)

在我的查询中,我需要显示日期和平均年龄:

SELECT (SYSDATE-rownum) AS DATE,
       avg((SYSDATE - rownum)- create_time) as average_Age
FROM items
group by (SYSDATE-rownum)
但我的平均年龄输出是不正确的。它只是简单地计算/显示
(SYSDATE-rownum)-create\u time的输出,而不是计算它们的平均值,尽管我使用了:
avg((SYSDATE-rownum)-create\u time)


有人能告诉我为什么聚合函数
AVG
在我的查询中不起作用,以及在select子句中,您使用的是非聚合表达式和聚合表达式,可能的解决方案是什么。通过删除
(SYSDATE rownum)AS DATE
语句,您将生成整个数据集的结果。这样就可以在整个数据集上计算
avg
。。。而不仅仅是检索每个记录。 然后您也可以通过
删除
组。最后,你只需保留avg声明

SELECT avg((SYSDATE - rownum)- create_time) as average_Age
FROM items

首先,您需要考虑需要avg的行或组。此列将以GROUPBY子句的形式出现。简单地说,如果有5行的年龄分别为20、10、20、30,则平均值为(80/4=20),即20。因此,我认为您需要首先通过(sysdate-create_time)计算年龄


然后会有组上平均值的外部查询。

请显示样本数据和预期输出。为什么要从一个日期对rownum进行分组?请用示例数据显示表结构好吗?group by sysdate rownum确保您是按行分组的,所以平均值当然是该行的单个值。
eg.select months_between(sysdate,create_date)/12 cal3 from your_table