我需要从每个人的年龄中减去他们的工作年数,然后取平均值,我的最终答案应该是一个整数来代表被雇用时的平均年龄。
下面是我的代码
select HireDate,
CASE
WHEN strftime('%m', date('now')) > strftime('%m', date(BirthDate))
THEN strftime('%Y', date('now')) - strftime('%Y', date(BirthDate))
WHEN strftime('%m', date('now')) = strftime('%m', date(BirthDate)) THEN
CASE
WHEN strftime('%d', date('now')) >= strftime('%d', date(BirthDate))
THEN strftime('%Y', date('now')) - strftime('%Y', date(BirthDate))
ELSE strftime('%Y', date('now')) - strftime('%Y', date(BirthDate)) -1
END
WHEN strftime('%m', date('now')) < strftime('%m', date(BirthDate)) THEN strftime('%Y', date('now')) - strftime('%Y', date(BirthDate)) -1
END AS 'age',
CASE
WHEN 1>0
THEN (strftime('%Y', date(HireDate)) - strftime('%Y', date('now')))
END AS 'yw'
from Employee
这将显示员工的入职日期、年龄和工作年限:
有人知道为什么减去两个病例不起作用吗?
2条答案
按热度按时间bn31dyow1#
试试看:-
这克服了找不到age和yw列的问题。
下面是一个工作示例,它密切(足够)反映了数据:
和结果(注解重新显示所有数据):-
jrcvhitl2#
如果将来有人试图从HireDate和Birthdate列中查找某个雇员的平均雇用日期,我所见过的最佳答案是
SELECT AVG(聘用日期-出生日期)FROM员工