В общем, мне нужно связать записи (группы), созданные за аналогичные периоды времени. Если это поможет, подумайте о нижеследующем примере как данные по потоку данных, где нет идентификатора сеанса, и мне нужно создать эти сеансы.Групповые события по временному расстоянию в SQL
У меня есть следующий набор данные:
UserId INT,
EventId INT,
DateCreated DATETIME,
BlockId INT
Примут следующие данные:
{123, 111, '2009-12-01 9:15am', NULL}
{123, 222, '2009-12-01 9:20am', NULL}
{123, 333, '2009-12-01 9:25am', NULL}
{123, 444, '2009-12-03 2:30pm', NULL}
{123, 555, '2009-12-03 2:32pm', NULL}
Что мне нужно сделать, это разделить эти события вверх, пользователем, в височные ведра. Существует бизнес-правило, в котором говорится, что все> 30 минут должны быть новым ковшом. В приведенном выше примере события 111-333 представляют собой блок, т. Е. Не более 30 минут отделяет их. Аналогично, события 444-555 представляют собой второй блок.
Мое текущее решение использует курсор и чрезвычайно медленное (следовательно, неустойчиво для количества данных, которые мне нужно обработать). Я могу опубликовать код, но это довольно просто.
Любые идеи?
Я не думаю, что я понимаю, что вам нужно - какими будут ваши результаты для образцов данных? – Ray
В ваших образцах данных неверная метка времени для 'UserID' 123ID' UserID' 555 - это два дня слишком рано. – pilcrow
Исправлена метка времени, хороший улов. – austincav