Как найти диапазон дат между двумя заказами из таблицы Order относительно последующих Customer_Ids? - PullRequest
0 голосов
/ 13 февраля 2020

Например, скажем, у нас customer_id = 1, и он разместил 3 заказа за 2 года, а его

1st Order_date = '1st Jan 2015'
2nd Order_date = '5 июня 2015'
3rd Order_date = '2nd Feb 2016'.

Это должно рассчитываться ежегодно с даты, когда он разместил свой первый заказ.

Пожалуйста, дайте мне знать, как реализовать этот сценарий в HiveQL.

1 Ответ

0 голосов
/ 17 февраля 2020

выберите ord_rnk_1.customer_id, ord_rnk_1.order_id в качестве 1st_order, ord_rnk_2.order_id в качестве 2nd_order, ord_rnk_1.order_date в качестве 1st_order_date, ord_rnk_2.order_date в качестве 2nd_order_dll, ORD_ND_ND_ND_ND_ND, ORD_ND, ORD_ND, ORD_ND, ORD_ND, ORD_ND, ORD_ND_ND_ND, ORD datediff (ord_rnk_2.order_date, ord_rnk_1.order_date) <= 365 THEN 'повторная покупка' ELSE '1-ая покупка' заканчивается как тип_пользователя из (выберите customer_id, order_id, order_date из (выберите customer_id, order_id, order_date, row_number () более (разделить на customer_id order by date_date как c) ранжировать (выбрать отдельный customer_id, order_id, to_date (order_date, "dd / mm / yyyy") как order_date из table_t1) abc) order_rank, где order_rank.rank = 1) ord_rnk_1 покинуть соединение (выбрать customer_id, order_id, order_date from (выберите customer_id, order_id, order_date, row_number () over (разделить по customer_id order_date как c), ранжировать <br>из (выбрать отдельный customer_id, order_id, to_date (order_date, "dd / mm / гггг ") как дата_порядка из таблицы_т1) abc) ord er_rank где order_rank.rank = 2) ord_rnk_2 on ord_rnk_1.customer_id = ord_rnk_2.customer_id

...