员工年度计算

时间:2014-09-09 13:39:51

标签: mysql stored-procedures

我有employees表{/ 1}}字段

我有date_of_join表,其中包含以下字段:

employee_leaves

该员工于2011年2月15日加入

我希望有一个查询,根据他的date_of_join

显示每个员工年度的叶子数

例如,如果员工于2011年2月15日加入,则结果将如下:

employee_id
leave_from
leave_to
total_days

其中2月到2月是雇员年,因此每年2月15日至2月14日

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

没有您的数据很难对此进行测试,但我根据您的描述想出了以下内容:

SELECT  employees.employee_id, DATE_ADD(employees.date_of_join, INTERVAL yrs.years) frm 

,DATE_ADD(employees.date_of_join, INTERVAL yrs.years + 1) too,
    SUM(employee_leaves.total_days)
FROM employee_leaves
INNER JOIN (SELECT 0 years UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) yrs 
ON 1=1
INNER JOIN employees ON employee_leaves.employee_id = employees.employee_id
AND employee_leaves.leave_from BETWEEN DATE_ADD(employees.date_of_join, INTERVAL yrs.years) AND DATE_ADD(employees.date_of_join, INTERVAL yrs.years + 1) 
GROUP BY employees.employee_id, DATE_ADD(employees.date_of_join, INTERVAL yrs.years)
;

可能需要一些摆弄,希望这有帮助。