在我的查询中,我需要显示日期和平均年龄:
SELECT (SYSDATE-rownum) AS DATE,
avg((SYSDATE - rownum)- create_time) as average_Age
FROM items
group by (SYSDATE-rownum)
但我的平均年龄输出不正确。它只是计算/显示(SYSDATE - rownum)- create_time
的输出,但不计算它们的平均值,尽管我使用:avg((SYSDATE - rownum)- create_time)
。
有人可以告诉我为什么聚合函数AVG
在我的查询中不起作用以及可能的解决方案
答案 0 :(得分:0)
在select子句中,您既使用非聚合表达式,也使用聚合表达式。通过删除(SYSDATE-rownum) AS DATE
状态,您将在整个数据集上生成结果。以这种方式,avg
计算在整个数据集上......而不仅仅是每个记录检索。
然后你也可以放弃group by
。最后你只需保留平均声明
SELECT avg((SYSDATE - rownum)- create_time) as average_Age
FROM items
答案 1 :(得分:0)
First you need to think on rows or group on which you need avg. this column will come in group by clause. as a simple thing if there is 5 rows with age of 20, 10, 20, 30 then avg will be (80/4=20) i.e. 20. so I think you need to fist calculate age by (sysdate - create_time).
eg.select months_between(sysdate,create_date)/12 cal3 from your_table
and then there will be outer query for avg on group.