Я хочу знать первую и вторую покупку клиентов с условием
первая покупка должна быть в январе, вторая покупка может быть в любое время
вторая покупка должна иметь другую подкатегорию (та же самая большая категория в порядке)
Это пример данных:
Table: ods.user
ID Category Sub_category Date
1 VEH Car 2019-01-01 -1
1 VEH Car 2019-01-15 (same sub cate with 1st buy)
1 VEH Bus 2019-02-01 (Not the smallest date)
1 VEH Motor 2019-01-20 -2
2 ELT Phone 2019-01-01 -1
2 VEH Car 2019-04-01 -2
3 Fur Table 2019-02-01 (first buy not in January)
3 VEH Car 2019-02-02
Это ожидаемый результат:
ID 1_cate 1_sub_cate 2_cate 2sub_cate Days_diff
1 VEH Car VEH Bus 31
2 ELT Phone VEH Motor 19
P / s: в настоящее время я работаю над BigQuery
из Google
работает SQL язык
На данный момент это мой код:
create table #a as
select z.ID, z.category, z.sub_category, z.date from ods.user z
join
(select id, min(date) as first_buy
from ods.user
having min(first_approved_time) >= '2019-01-01' and
min(first_approved_time) < '2019-02-01') x
on z.id = x.id and z.date = x.min_date
create table #b as
select ID, category, sub_category,
row_number() over
(partition by account_id, category order by first_approved_time asc) as row_num
from ods.user
where row_num <= 2
Я намеревался оставить таблицу №a соединенной с таблицей #b. Однако
Таблица #b неверна, потому что она дала такой результат:
ID Category Sub_category Date Row_num
1 VEH Car 2019-01-01 1
1 VEH Car 2019-01-15 2
Я не знаю, как ввести condition
, что второе должно отличаться sub_category
от первого.