查询以选择在给定时间段内缺少几周的记录

时间:2019-05-29 10:29:23

标签: mysql

我正在创建时间表应用程序。 用户将填写时间表并每周提交一次,以批准他们各自的报告负责人。 有一个名为week_approval的表,该表具有以下结构。

id(Primary)-int(11)
employee_id(Index)-int(11)
week_start_date(Index)-date
status-int(11)

员工每周提交时间表时,都会在该表中添加一条记录。 Week_start_date列记录星期几。 状态栏显示该周时间表的状态为; 0 =已保存,1 =已提交,2 =已批准,3 =已拒绝

我正在尝试创建一个查询,以提取特定时期内所有缺少的时间表。

我已经尝试了一些方法以如下方式获取2019年4月的报告;

SELECT week_approval.employee_id, COUNT(week_approval.id)
FROM week_approval
WHERE week_approval.week_start_date > '2019-05-01'
GROUP BY week_approval.employee_id
HAVING COUNT(week_approval.id) < 3
LIMIT 100

为此,我从employee_id分组的表中检查了id的计数,并检查计数是否小于5。 4月有5个工作周开始日期; 1,8,15,22和29。 但是,这太麻烦了,因为我必须手动计算出两个时间段之间有几周的开始日期。在这种情况下5。 此外,它不会给我丢失的几周时间,而仅给出计数。

预期结果是;

+------------+--------------+
|employee_id | week missing |
+------------+--------------+
|      2     |  2019-04-01  |
+------------+--------------+
|      12    |  2019-04-01  |
+------------+--------------+
|      18    |  2019-04-08  |
+------------+--------------+

0 个答案:

没有答案