Я написал запрос для решения проблемы, но я не могу проверить его как ориентированный на псевдокод. Я надеюсь, что кто-то может просмотреть этот запрос и сказать мне, если я что-то упустил. Заранее спасибо.
Проблема:
Найти всех пользователей, которые купили у одного и того же продавца хотя бы за три недели в течение 1 месяца и которые потратили суммы покупки, которые находятся в пределах 5% друг друга.
Мой запрос:
select distinct a.customer_id, a.purchase_date
from
(
select
customer_id,
retailer,
purchase_date,
WEEK(purchase_date)as wk,
purchase_amount,
Lag(purchase_amount) over (partition by customer_id,retailer) as previous_amt,
Lag(WEEK(purchase_date)) over (partition by customer_id,retailer) as previous_wk,
count(WEEK(purchase_date)) over (partition by customer_id,retailer)count
from tbl
)a
where (a.wk-a.previous_wk)<(1/7)*30
and a.count>2
and abs(a.purchase_amount-a.previous_amt)/a.purchase_amount <=0.05
Пожалуйста, дайте мне знать, если вы обнаружите какие-либо проблемы с этим запросом. Заранее спасибо!