(user_id, paid_at)
Нужно получить в результате выборки:
месяц, кол-во зарегистрированных в этот месяц пользователей и кол-во пользователей которые в этот месяц зарегистрировались И СОВЕРШИЛИ ПЛАТЕЖ
Помесячную группировку делал через DATE_TRUNC('month', registered_at), а вот как бы сюда прилепить флаг первого платежа в этом месяце? Если в условия джойна добавить еще и месяц, помимо user_id, то тоже выходит не совсем корректно, т.к. в один месяц пользователь может совершить несколько платежей. В принципе, может подойти, если count(DISTINCT ON user_id), но может есть более изящный вариант приджойнить только первую подходящую запись
select users.id ,m.m -- Месяц регистрации ,pm.pm -- Месяц первого платежа from users cross join lateral (select DATE_TRUNC('month', registered_at) as m) m left join ( select user_id, DATE_TRUNC('month', max(paid_at)) as pm from payments group by 1 ) pm on pm.user_id = users.id
Спасибо, попробую и отпишу
Обсуждают сегодня