Как проще всего найти разницу между датой первой и второй транзакцией пользователя? Транзакций может быть сколько угодно.
Отсортировать по дате и сделать таблицу, date - lead(date)?
Используй оконные функции с нумерацией на первого второго и сортировкой, дальше вычитай дату
Звучит ужасно, спасибо
сортировать не обязательно - использый lead() over (partition by order by)
Глаза боятся, а руки пишут: SELECT user_id, diff FROM ( SELECT user_id, lead(created_at) OVER w - created_at AS diff, row_number() OVER w AS rownum FROM transactions WINDOW w AS (PARTITION BY user_id ORDER BY created_at) ) ranked WHERE rownum = 1;
Можно CTE syntax использовать WITH ranked AS ( SELECT user_id, lead(created_at) OVER w - created_at AS diff, row_number() OVER w AS rownum FROM transactions WINDOW w AS (PARTITION BY user_id ORDER BY created_at) ) SELECT user_id, diff WHERE rownum = 1;
Обсуждают сегодня