У меня есть некоторые данные, которые (вообще говоря) состоят из следующих полей:
Person TaskID Start_time End_time
Alpha 1 'Wed, 18 Oct 2017 10:10:03 GMT' 'Wed. 18 Oct 2017 10:10:36 GMT'
Alpha 2 'Wed, 18 Oct 2017 10:11:16 GMT' 'Wed, 18 Oct 2017 10:11:28 GMT'
Beta 1 'Wed, 18 Oct 2017 10:12:03 GMT' 'Wed, 18 Oct 2017 10:12:49 GMT'
Alpha 3 'Wed, 18 Oct 2017 10:12:03 GMT' 'Wed, 18 Oct 2017 10:13:13 GMT'
Gamma 1 'Fri, 27 Oct 2017 22:57:12 GMT' 'Sat, 28 Oct 2017 02:00:54 GMT'
Beta 2 'Wed, 18 Oct 2017 10:13:40 GMT' 'Wed, 18 Oct 2017 10:14:03 GMT'
Для этих данных мой требуемый вывод выглядит примерно так:
Person TaskID Time_between_attempts
Alpha 1 NULL ['Wed, 18 Oct 2017 10:10:03 GMT' - NULL]
Alpha 2 0:00:40 ['Wed, 18 Oct 2017 10:11:16 GMT' -'Wed, 18 Oct 2017 10:10:36 GMT']
Beta 1 NULL ['Wed, 18 Oct 2017 10:12:03 GMT' - NULL]
Alpha 3 0:00:35 ['Wed, 18 Oct 2017 10:12:03 GMT' -'Wed, 18 Oct 2017 10:11:28 GMT']
Gamma 1 NULL ['Fri, 27 Oct 2017 22:57:12 GMT' - NULL]
Beta 2 0:00:51 ['Wed, 18 Oct 2017 10:13:40 GMT' -'Wed, 18 Oct 2017 10:12:49 GMT']
Мои требования следующие:
а. Для данного человека (Альфа, Бета или Гамма) первое вхождение переменной 'time_between_attempts' будет равно нулю/NULL - в примере я показал его как NULL.
б. Второй (и последующие) раз появление того же человека будет иметь не NULL или ненулевое значение «time_between_attempts». Эта переменная вычисляется путем получения разницы между временем окончания предыдущей задачи и временем начала следующей задачи.
В связи с этим у меня следующий вопрос:
- Как написать сценарий SQL, который поможет мне добиться желаемого результата?
Обратите внимание, что TaskID записывается как целое число только для упрощения. В исходных данных TaskID сложный и состоит из прерывистых строк, таких как:
'q:1392763916495:441',
'q:1392763916495:436'
Любые советы по этому поводу будут очень признательны.