TGViewer
Data Science. SQL hub Data Science. SQL hub @sqlhub · 36K subscribers
Post #354 2.25K
🖥 Задача

Компания определяет своих суперпользователей как тех, кто совершил не менее двух транзакций. Из следующей таблицы (см картинку) напишите запрос, чтобы вернуть для каждого пользователя дату, когда он стал суперпользователем, сначала тех, кто стал раньше суперпользователем. Пользователи, которые не являются суперпользователями, также должны присутствовать в таблице.

Решение

WITH users (user_id, action, action_date)
AS (VALUES
(1, 'start', CAST('2-12-20' AS date)),
(1, 'cancel', CAST('2-13-20' AS date)),
(2, 'start', CAST('2-11-20' AS date)),
(2, 'publish', CAST('2-14-20' AS date)),
(3, 'start', CAST('2-15-20' AS date)),
(3, 'cancel', CAST('2-15-20' AS date)),
(4, 'start', CAST('2-18-20' AS date)),
(1, 'publish', CAST('2-19-20' AS date))),
-- create a date rank column, partitioned by user ID, using the ROW_NUMBER() window function
t1 AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY action_date DESC) AS date_rank
FROM users ),
-- filter on date rank column to pull latest and next latest actions from this table
latest AS (
SELECT *
FROM t1
WHERE date_rank = 1 ),
next_latest AS (
SELECT *
FROM t1
WHERE date_rank = 2 )
-- left join these two tables, subtracting latest from second latest to get time elapsed
SELECT
l1.user_id,
l1.action_date - l2.action_date AS days_elapsed
FROM latest l1
LEFT JOIN next_latest l2
ON l1.user_id = l2.user_id
ORDER BY 1


@sqlhub
  • 🔥 6
  • ❤ 2
  • 👍 1
  • 👎 1
More from @sqlhub
  1. Oct 8, 2026🧮 Математика для ИИ на русском: от школьной базы до трансформеров и диффузии Бесплатный к…
  2. Oct 8, 2026🧩 SQL-задача: почему `LAG()` здесь подведёт? Есть интервалы работы сервера. Время указано…
  3. Oct 8, 2026ИИ-агент отвечает настолько точно, насколько готовы ваши данные. Как понять, что они готов…
  4. Oct 7, 2026🌍 SQL-задача: ближайшие точки на замкнутой карте Карта 100 × 100: противоположные края со…
  5. Oct 7, 2026ИИ-агент, который только отвечает на вопросы, — это уже прошлый этап. Следующий шаг — науч…
  6. Oct 6, 2026⚡️ SQL с подвохом: NULL в пустом списке Что выведет PostgreSQL? SELECT NULL IN (SELECT 1 W…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →