我需要找出目前有多少 25-29 岁的学生因超过 25 岁而被排除在注册系统之外。
表格是:STUDENT
&STUDENT_STATUS_HISTORY
Student
包含PERSON_ID
&BIRTH_DATE
在其他领域。
Student_Status_History
包含REASON_CODE
(不包括 4 个)
我的问题是关于加入表格的语法以及如何使用出生日期正确计算所需的年龄范围。
有人可以请教吗?
加入 PERSON_ID 上的表。
要获取出生日期,请使用日期差异之类的函数:
select trunc((months_between(sysdate, dob))/12) age
试试这个查询:
select count(*) from student s join student_status_history ssh
on
s.id=ssh.student_id
where
ss.reason_code=4
and
DATEDIFF(year,s.birthdate,sysdate)>=25 and DATEDIFF(year,s.birthdate,sysdate)<=29
请参阅DateDIFF。
编辑如果您的数据库不支持 DATEDIFF ,请尝试以下操作:
select count(*)
from
student s
join
student_status_history ssh
on
s.id=ssh.student_id
where
ss.reason_code=4
and
floor(months_between(s.birthdate, sysdate) /12)>=25 and
floor(months_between(s.birthdate, sysdate) /12)<=29