小编Max*_*x13的帖子

查找结果中缺少哪个日期

这是我的ticks(时钟)表:

_id_
#employee_id  
created_at
Run Code Online (Sandbox Code Playgroud)

该表为每个员工存储他们勾选的时间戳。有时他们中的一些人一天打好几次,有些人不上班时只打一次或根本不打。

我有一个查询,可以让我确切地知道员工在过去 7 天内不上班的次数,但我希望结果中包含他们上班的天数。这意味着,每个员工在过去 7 天内工作少于 6 天,以及缺少哪些日期。我不知道。

以下是我如何查询过去 7 天内谁缺席了不止一次,以及缺席了多少次:

SELECT `id`, `employee_id`, COUNT(`date`)-6 missing
FROM (
    SELECT `id`, `employee_id`, DATE(created_at) date
    FROM `ticks`
    WHERE `created_at` >= '2017-09-16' AND `created_at` < '2017-09-23'
    GROUP BY `employee_id`, `date`
) ticks
GROUP BY `employee_id`
HAVING missing < 0
Run Code Online (Sandbox Code Playgroud)

基于那个或另一个查询,我想知道该范围内缺少哪个日期(顺便说一下,我可以从另一个查询中获取范围,每天至少有 1 个刻度,即使是在星期日)。

这是一个带有示例数据集的sqlfiddle。我期待的结果是:

+-------------+--------------+
| employee_id | date_missing |
+-------------+--------------+
|           2 |   2017-09-18 |
|           2 |   2017-09-19 |
|           3 | …
Run Code Online (Sandbox Code Playgroud)

mysql date

-1
推荐指数
1
解决办法
2227
查看次数

标签 统计

date ×1

mysql ×1