MySQL - группировка по последовательным записям с одинаковым значением столбца - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть таблица mysql с именем employee_jobs, которая выглядит примерно так:

id (uuid) | job_id (uuid) | employee_id (uuid) | date (date)
----------|---------------|--------------------|------------
id-1      | job-id-1      | emp-id-1           | 2019-04-01
id-2      | job-id-1      | emp-id-1           | 2019-04-03
id-3      | job-id-2      | emp-id-1           | 2019-04-04
id-4      | job-id-1      | emp-id-1           | 2019-04-05
id-5      | job-id-3      | emp-id-2           | 2019-04-01

Я настроил запрос для получения данных и упорядочил сначала по employee_id, затем по date (как показано выше).Я хочу получить список рабочих периодов по сотрудникам, поэтому в приведенном выше примере я получу что-то вроде:

employee_id (uuid) | job_id (uuid) | start_date(date) | end_date (date)
-------------------|---------------|------------------|----------------
emp-id-1           | job-id-1      | 2019-04-01       | 2019-04-03
emp-id-1           | job-id-2      | 2019-04-04       | 2019-04-04
emp-id-1           | job-id-1      | 2019-04-05       | 2019-04-05
emp-id-2           | job-id-3      | 2019-04-01       | 2019-04-01

Несколько замечаний - 1: есть две записидля emp-id-1 и job-id-1, поскольку сотрудник 1 находился на этой работе в течение двух отдельных периодов (с днем ​​между job-id-2).Во-вторых, в календарных днях на работе могут быть пробелы (например, в выходные или праздничные дни), но это не должно разбивать даты начала и окончания (для emp-id-1 на job-id-1 в течение первого периода работы не былона 2019-04-02, но период задания по-прежнему изменяется с 2019-04-01 на 2019-04-03.

Может ли mysql выполнить запрос, который выполняет такую ​​группировку, путем последовательных (упорядоченных) записей, имеющих одинаковые job_id и employee_id (которыйЯ мог бы затем агрегировать с максимальными / минимальными датами)? Или это нужно будет делать вне запроса к базе данных?

...