我想问一下如何从出生日期表中调用显示年龄的SQL?
因为我必须调用SQL来显示退休公司的员工的平均年龄。
我的SQL语句:
Select AVG (age)
From Employee, Career
Where employee.employee_ID=Career.employee_ID
AND Career.Status =Retired
但我没有"年龄表"
答案 0 :(得分:0)
你正确使用AVG,从那里你只需要计算每个人的年龄。您可以在一个查询中完成所有操作(并且有很多方法,如评论中所述)。这里的年龄数学是根据this question
的答案改编的SELECT AVG(DATEDIFF(yy, employee.Date_of_Birth, GetDate()) -
CASE WHEN MONTH(GetDate()) < MONTH(employee.Date_of_Birth) THEN 1
WHEN MONTH(GetDate()) > MONTH(employee.Date_of_Birth) THEN 0
WHEN DAY(GetDate()) < DAY(employee.Date_of_Birth) THEN 1
ELSE 0 END)
FROM Employee
JOIN Career on employee.employee_ID = Career.employee_ID
AND Career.Status = 'Retired'
(SQL Server在这里,因为原始问题没有指定。保留它以防万一它)
答案 1 :(得分:0)
这个怎么样:
SELECT
AVG(DateDiff("yyyy", employee.Date_of_Birth, Date()) + Int(Format(Date(), "mmdd") < Format(employee.Date_of_Birth, "mmdd")) as AverageAge
FROM Employee
JOIN Career on employee.employee_ID = Career.employee_ID
AND Career.Status = "Retired"
从here
无耻地窃取逻辑