Количество вхождений с даты и времени транзакции 1 час в SQL

#sql #timestamp #window-functions

#sql #временная метка #окно-функции

Вопрос:

У меня есть набор данных, подобный

 Transaction Time      A     B    C      Expected Output
3/17/2020 14:42      India  1   10        2
3/17/2020 15:09      India  1   10        0
3/17/2020 15:48      India  1   10        4
3/17/2020 15:59      India  1   10        0
3/17/2020 16:13      India  1   10        0
3/17/2020 16:36      India  1   10        0
3/17/2020 17:02      India  1   10        1
3/17/2020 18:42      India  1   10        5
3/17/2020 18:55      India  1   10        0
3/17/2020 19:05      India  1   10        0
3/17/2020 19:24      India  1   10        0
3/17/2020 19:30      India  1   10        0
3/17/2020 20:01      India  1   10        1
3/17/2020 21:24      India  1   10        3
3/17/2020 21:26      India  1   10        0
3/17/2020 21:48      India  1   10        0
 

Набор данных основан на дате и времени транзакции с некоторыми связанными с ним измерениями.

Первая транзакция произошла 17.03.20 14:42, я хочу знать, сколько таких транзакций доступно между датой первой транзакции и следующим интервалом в 1 час. Итак, в данных мы видим, что первая и вторая записи удовлетворяют этому критерию, поэтому последний столбец «Ожидаемый результат» равен 2 в первой строке и 0 во 2-й строке.

снова счетчик будет начинаться с третьей записи: 17.03.2020 15:48 итак, для этой записи мы видим, что всего таких транзакций 4, которые находятся между текущим интервалом datetime 1 час, поэтому строка 3 установлена как 4, а строка 4,5,6 установлена как 0 и так далее.

Запрашиваю вашу помощь по тому же вопросу.

Комментарии:

1. Извините, но по какой логике счетчик будет сброшен? Какова реальная идея, стоящая за этим? Ваше описание, похоже, подразумевает, что ожидаемый результат зависит от запрашиваемой минимальной временной метки транзакции, что звучит довольно странно. Согласны ли мы с тем, что без логики сброса ожидаемый результат в строке 2 будет равен 3, поскольку две последовательные транзакции происходят в течение одного часа после транзакции 2?

2. Основная задача — показать, сколько таких транзакций приходится на период между каждым часом, начиная с первой транзакции дня. Итак, в приведенном выше примере мы можем сделать так, что было одно вхождение из 5 транзакций, одно вхождение из 4 и одно для 3.

3. Хорошо, после некоторых попыток я не вижу другого решения, кроме того, что связано с курсором. В какой СУБД вы работаете?