У меня есть таблица shopevent, в которой есть строки транзакций с идентификатором столбца, user_id, shop_date. я могу тянуть магазин событие с sometthing какПолучение новых уникальных пользователей покупки из таблицы покупок
SELECT * FROM SHOP_EVENTS A LEFT OUTER JOIN USER_TABLE B ON A.USER_ID = B.USER_ID WHERE B.USER_REGISTRATION_DT BETWEEN '2012-01-01' AND '2012-01-31'
У меня также есть таблица пользователей, из которых я могу получить пользователь, зарегистрированные в конкретном месяце.
SELECT * FROM USER_TABLE WHERE registration_date between '2012-01-01' AND '2012-01-31'
То, что я пытаюсь достичь, - это то, сколько новых уникальных пользователей совершили покупку каждый месяц после регистрации.
Вот запрос, который я пытаюсь.
SELECT
CASE
WHEN shop_date BETWEEN '2012-01-01' AND '2012-01-31' THEN 1
WHEN shop_date BETWEEN '2012-02-01' AND '2012-02-29' THEN 2
WHEN shop_date BETWEEN '2012-03-01' AND '2012-03-31' THEN 3
WHEN shop_date BETWEEN '2012-04-01' AND '2012-04-30' THEN 4
WHEN shop_date BETWEEN '2012-05-01' AND '2012-05-31' THEN 5
WHEN shop_date BETWEEN '2012-06-01' AND '2012-06-30 'THEN 6
WHEN shop_date BETWEEN '2012-07-01' AND '2012-07-31 'THEN 7
WHEN shop_date BETWEEN '2012-08-01' AND '2012-08-31 'THEN 8
WHEN shop_date BETWEEN '2012-09-01' AND '2012-09-30 'THEN 9
WHEN shop_date BETWEEN '2012-10-01' AND '2012-10-31 'THEN 10
WHEN shop_date BETWEEN '2012-11-01' AND '2012-11-30 'THEN 11
WHEN shop_date BETWEEN '2012-12-01' AND '2012-12-31 'THEN 12
WHEN shop_date BETWEEN '2013-01-01' AND '2013-01-31 'THEN 13
WHEN shop_date BETWEEN '2013-02-01' AND '2013-02-28 'THEN 14
WHEN shop_date BETWEEN '2013-03-01' AND '2013-03-31 'THEN 15
WHEN shop_date BETWEEN '2013-04-01' AND '2013-04-30 'THEN 16
WHEN shop_date BETWEEN '2013-05-01' AND '2013-05-31 'THEN 17
WHEN shop_date BETWEEN '2013-06-01' AND '2013-06-30 'THEN 18
WHEN shop_date BETWEEN '2013-07-01' AND '2013-07-31 'THEN 19
WHEN shop_date BETWEEN '2013-08-01' AND '2013-08-31 'THEN 20
WHEN shop_date BETWEEN '2013-09-01' AND '2013-09-30 'THEN 21
WHEN shop_date BETWEEN '2013-10-01' AND '2013-10-31 'THEN 22
WHEN shop_date BETWEEN '2013-11-01' AND '2013-11-30 'THEN 23
WHEN shop_date BETWEEN '2013-12-01' AND '2013-12-31 'THEN 24
WHEN shop_date BETWEEN '2014-01-01' AND '2014-01-31 'THEN 25
WHEN shop_date BETWEEN '2014-02-01' AND '2014-02-28 'THEN 26
WHEN shop_date BETWEEN '2014-03-01' AND '2014-03-31 'THEN 27
WHEN shop_date BETWEEN '2014-04-01' AND '2014-04-30 'THEN 28
WHEN shop_date BETWEEN '2014-05-01' AND '2014-05-31 'THEN 29
WHEN shop_date BETWEEN '2014-06-01' AND '2014-06-30 'THEN 30
WHEN shop_date BETWEEN '2014-07-01' AND '2014-07-31 'THEN 31
WHEN shop_date BETWEEN '2014-08-01' AND '2014-08-31' THEN 32
WHEN shop_date BETWEEN '2014-09-01' AND '2014-09-30' THEN 33
WHEN shop_date BETWEEN '2014-10-01' AND '2014-10-31' THEN 34
WHEN shop_date BETWEEN '2014-11-01' AND '2014-11-30' THEN 35
WHEN shop_date BETWEEN '2014-12-01' AND '2014-12-31' THEN 36
WHEN shop_date BETWEEN '2015-01-01' AND '2015-01-31' THEN 37
WHEN shop_date BETWEEN '2015-02-01' AND '2015-02-28' THEN 38
WHEN shop_date BETWEEN '2015-03-01' AND '2015-03-31' THEN 39
WHEN shop_date BETWEEN '2015-04-01' AND '2015-04-30' THEN 40
WHEN shop_date BETWEEN '2015-05-01' AND '2015-05-31' THEN 41
END AS month,
count(user_id),
count(DISTINCT user_id)
FROM
shop_events a
inner join user_table b on a.user_id = b.user_id
WHERE
user_registration_dt between '2012-01-01' and '2012-01-31'
Это дает мне уникальных пользователей, которые сделали покупку каждый месяц, начиная месяц 1. Как получить список новых уникальных пользователей, которые сделали покупку. Это означает, что, скажем, из 10 000 регистраций 100 пользователей совершили покупку в месяц 1. После этого 50 новых пользователей, которые не были частью 100 из предыдущего месяца, совершили покупку. Как я могу получить новых уникальных пользователей в таком запросе?
Любая помощь будет отличной.