所以我有一张有出生日期的表格,我需要平均人们的年龄。我怎么做?我知道我必须使用months_between()。提前谢谢!
答案 0 :(得分:0)
为什么您认为自己需要months_between
?你没有(除非你有一个非常具体和不寻常的定义"平均年龄")。
在足够长的时间内(例如40多年),可以计算一个人的年龄(在狭窄的近似窗口内)作为以天为单位的年龄除以365.25。以天为单位的年龄只是两个日期SYSDATE
和DATE_OF_BIRTH
或BORN
之间的差异。第一个由系统提供,第二个在您的表中。假设,那就是你想要今天的年龄;否则将SYSDATE改为" as-of" (固定)您想要使用的日期。
所以,像
select [some columns here], AVG(SYSDATE - BORN)/365.25 as avg_age
from your_table
不清楚为什么要从max(born)
中选择dual
;你肯定没有给你的表dual
打电话?您是否也没有更改标准dual
表格来添加自己的数据?
当人们询问您在表格中使用born
的数据类型时,在查询时在屏幕上看到的内容是不够的;屏幕将显示一个字符串(它是屏幕显示的唯一内容)并且不一定反映数据库中的内容。要获得正确答案,请运行DESCRIBE table_name
;这将显示table_name
中的所有列及其数据类型。请注意,DESCRIBE table_name
是一个SQL * Plus命令(Toad和SQL Developer可以理解 - 无论您使用什么来与数据库通信),因此它不需要;
或{{1 }} 在末尾。只需在提示符下输入,然后点击/
。