Оператор MySQL для создания «конечного времени» оперативной смены, когда у меня есть только время начала следующего человека - PullRequest
0 голосов
/ 27 января 2019

Я изо всех сил пытаюсь создать оператор SQL для расчета времени окончания смены драйверов от времени начала следующего драйвера.У меня есть несколько водителей, которые управляют одним и тем же грузовиком, и мне нужно знать, какой водитель ведет в какое время.Для этого мне требуются столбцы для времени начала и окончания их пребывания за рулем грузовика.

Пример ниже, водитель 69 начинает свою смену в 1:55 на флоте 6, затем его заменяет водитель 26 в 13:55, поэтому логически я знаю, что время окончания его смены - 13:55.Однако я не могу потренироваться в операторе SQL для создания этого столбца. Эта таблица представляет собой непрерывную таблицу, охватывающую несколько дат.

Table example here

Большое спасибо!

1 Ответ

0 голосов
/ 27 января 2019

В MySQL 8+ вы можете использовать lead().Позвольте мне предположить, что вы используете более раннюю версию:

select s.*,
       (select min(s2.start_datetime)
        from shifts s2
        where s2.start_datetime > s.start_datetime
       ) as end_datetime
from shifts s;

Это намного проще с lead():

select s.*,
       lead(s.start_datetime) over (order by s2.start_datetime) as end_datetime
from shifts s;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...