0

我需要找出目前有多少 25-29 岁的学生因超过 25 岁而被排除在注册系统之外。

表格是:STUDENT&STUDENT_STATUS_HISTORY

Student包含PERSON_ID&BIRTH_DATE在其他领域。
Student_Status_History包含REASON_CODE(不包括 4 个)

我的问题是关于加入表格的语法以及如何使用出生日期正确计算所需的年龄范围。

有人可以请教吗?

4

2 回答 2

3

加入 PERSON_ID 上的表。

要获取出生日期,请使用日期差异之类的函数:

select  trunc((months_between(sysdate, dob))/12) age 
于 2013-01-23T11:55:20.047 回答
1

试试这个查询:

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
于 2013-01-23T11:59:40.267 回答