У меня есть таблица отсутствий с 3 столбцами id, begin_dt, end_dt
. Мне нужно подсчитать, сколько идентификаторов имеет хотя бы один день отсутствия в этом месяце. Так, например, есть следующая строка:
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 '), но я не знаю, как справиться с тем фактом, что нам пришлось искать весь период 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 |
Посмотреть на скрипку БД