【发布时间】:2020-03-13 16:30:08
【问题描述】:
我有一张缺席表,其中包含 3 列 id, begin_dt, end_dt。我需要计算该月有多少 id 至少缺勤一天。因此,例如有如下一行:
id begin_dt end_dt
1 01/01/2020 02/02/2020
2 02/02/2020 02/02/2020
我的结果必须是
month count
01-2020 1
02-2020 2
我想在 DATE_FORMAT(SYSDATE(), '%Y-%m') 上与 group by,但我不知道如何处理我们必须查找整个期间 begin_dt 到 end_dt 的事实
你可以在这里找到这个例子的工作表:https://www.db-fiddle.com/f/rYBsxQzTjjQ9nGBEmeAX6W/0 架构 (MySQL v5.7)
CREATE TABLE absence (
`id` VARCHAR(6),
`begin_dt` DATETIME,
`end_dt` DATETIME
);
INSERT INTO absence
(`id`, `begin_dt`, `end_dt`)
VALUES
('1', DATE('2019-01-01'), DATE('2019-02-02')),
('2', DATE('2019-02-02'), DATE('2019-02-02'));
查询 #1
select * from absence;
| id | begin_dt | end_dt |
| --- | ------------------- | ------------------- |
| 1 | 2019-01-01 00:00:00 | 2019-02-02 00:00:00 |
| 2 | 2019-02-02 00:00:00 | 2019-02-02 00:00:00 |
【问题讨论】:
-
必须从哪里获取所需的年月值列表?并指定 您的(不是小提琴)MySQL 版本。
标签: mysql