У меня есть sql-таблица с записями, которые имеют имя и биение-datetime. В идеальных условиях сердцебиение будет происходить каждые 10 минут:
|Name|Heartbeat |
|A |20180907 09:10:00|
|A |20180907 09:20:00|
|A |20180907 09:30:00|
Теперь у меня больше людей:
|Name|Heartbeat |
|A |20180907 09:10:00|
|B |20180907 09:15:00|
|A |20180907 09:20:00|
|B |20180907 09:25:00|
|A |20180907 09:30:00|
У меня даже может быть то же имя от второго человека с таким же именем. Я могу различить их только по сердцебиению.
|Name|Heartbeat |
|A |20180907 09:10:00|
|A |20180907 09:15:00| --> Second A
|A |20180907 09:20:00|
|A |20180907 09:25:00| --> Second A
|A |20180907 09:30:00|
|A |20180907 09:35:00| --> Second A
|A |20180907 09:45:00| --> Second A
Иногда сердце может пропускать некоторые удары (иногда часами)
|Name|Heartbeat |
|A |20180907 09:10:00|
|A |20180907 09:20:00|
|A |20180907 16:46:00|
|A |20180907 16:56:00|
|A |20180907 17:06:00|
И последнее, но не менее важное: в нормальных условиях сердцебиение возникает не каждые 10 минут, а несколько секунд назад (я не видел более позднего сердцебиения, но не исключаю этого):
|Name|Heartbeat |
|A |20180907 09:59:02|
|A |20180907 10:08:50|
|A |20180907 10:18:04|
|A |20180907 10:27:50|
Что я хочу : Я хочу получить людей и их продолжительность.
Допустим, у меня есть следующая таблица:
|Name|Heartbeat |
|A |20180907 09:59:02|
|B |20180907 10:05:50|
|A |20180907 10:08:50|
|B |20180907 10:15:20|
|A |20180907 10:18:04|
|A |20180907 10:27:50|
|B |20180907 13:00:50|
|B |20180907 13:03:42| --> second B
|B |20180907 13:10:10|
|B |20180907 13:12:56| --> second B
|C |20180907 13:15:30|
|B |20180907 13:19:46|
|C |20180907 13:25:01|
|C |20180907 13:34:53|
Я хочу получить следующие результаты:
|Name|Duration|StartTime|EndTime |
|A |00:28:48|09:59:02 |10:27:50|
|B |00:09:30|10:05:50 |10:15:20|
|B |00:18:56|13:00:50 |13:19:46|
|B |00:09:14|13:03:42 |13:12:56|
|C |00:19:23|13:15:30 |13:34:53|
Возможно ли это даже с T-SQL (я не знаю точную версию SQL Server, но полагаю, что это как минимум SQL Server 2014)?
У меня даже нет отправной точки. Поэтому, если бы кто-нибудь дал мне подсказку в правильном направлении, я был бы очень благодарен.
Я думал, что курсоры будут полезны, но я не знаю, как их применять полезным способом.