Как получить, какие пользователи сделали транзакцию последовательно? - PullRequest
0 голосов
/ 08 апреля 2019

table_1 содержит следующие столбцы: user_id, order_id, transaction_time

тип данных для transaction_time - timestamp

SELECT user_id 
FROM table_1
WHERE transaction_time > date_sub(transaction_time, interval 20 MINUTE_SECOND)

Я хочу, чтобы количество людей, совершивших транзакцию последовательно меньше, чем20 минут, но мне не хватает знаний, чтобы сделать это.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Это выбирает время транзакции и окно через 20 минут после времени транзакции и подсчитывает количество транзакций этого пользователя в этом окне, а затем возвращает, где количество больше 1

select
  user_Id,
  transaction_time, 
  date_add(transaction_time, interval 20 MINUTE_SECOND)
  count(*) countofTransactions
from table_1
group by 
  user_Id,
  transaction_time, 
  date_add(transaction_time, interval 20 MINUTE_SECOND)
having count(*)>1 --having more than one transaction in the window
0 голосов
/ 08 апреля 2019

Попробуйте,

SELECT user_id,  
       case when sum(case when  transaction_time between transaction_time and dateadd(minute,20,transaction_time) then 1 else 0 end )  > 1 
            then 'User did transaction consecutively' 
            else 'No consecutive Transaction' end
FROM table_1
group by user_id
...