dimawar
@dimawar
сисадмин

Как подсчитать кол-во записей подряд с интервалом менее 2-х часов?

База MySQL и Symfony doctrine ORM.
Таблица судебных заседаний с полями: суд, дата и время заседания, представитель.
Надо подсчитать сколько раз представитель ходил в суд.
Например: Представитель может прийти в суд1 утром в 10:00, и у него там несколько заседаний подряд (10:00, 10:30, 11:30), а потом после обеда в 14:00. А другой представитель идет в суд2 в 11:00 и в 15:00. Результат: будет 2 выезда 1го представителя в суд1, и 2 выезда 2го представителя в суд2
Редактор
Совершенно не понятно влияет ли конкретный представитель и конкретный суд. Будем считать, что только время. Иначе не понятно, что собственно считать: расписание конкретного представителя в конкретном суде?


select MIN(date) as ddate, sud_id, profile_id, GRP
FROM
(
select date, sud_id, profile_id,
       @grp:=@grp+if(date>@prev+interval 2 hour,1,0) as GRP,
       @prev:=date
  from `sitting`, (select @prev:=NULL, @grp:=1) X
  WHERE (date BETWEEN '2021-02-01 00:00:00' AND '2021-02-28 00:00:00')
 order by date
) A
GROUP BY GRP, profile_id, sud_id
ORDER BY ddate ASC;

вот таким запросом получилось решить задачу, теперь надо понять, можно ли оптимизировать и как это обернуть в DQL для ORM ?
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы