Раздел SQL достиг "second_value" и т. Д.
Я рассчитываю удержание клиентов и хочу сегментировать своих клиентов в соответствии с поведением в первой, второй, третьей и т. Д. Покупках.
Например:
using first_value(had_coupon) over (partition by customer_id order by order_date DESC)
Я могу сегментировать с помощью купона при сохранении первого эффекта покупки.
Я пытаюсь сделать то же самое для второй и третьей покупки. Используя утверждение CASE, я могу дать другое значение клиентам, которые не покупали два, три или более раз.
Я использовал этот сайт для помощи.
1 ответ
Использование row_number()
для маркировки первого, второго, третьего и т. д. + группы по агрегации с использованием max()
или же min()
сгруппировать строки по клиенту /etc:
select max(case when rn=1 then had_coupon end) first_order_had_coupon,
max(case when rn=2 then had_coupon end) second_order_had_coupon,
-- and so on
--other group columns
from
(
select had_coupon,
--other columns
row_number() over (partition by customer_id order by order_date DESC) rn
from table
)s
group by group columns