Кейс с собеседований на SQL

В истории заказов хранится несколько строк на один order_id с разными статусами и датами обновления. Необходимо оставить строки с последним актуальным статусом, не применяя JOIN.

➡️ Решение: используем ROW_NUMBER(), чтобы пронумеровать версии по дате и взять последнюю актуальную

WITH ranked_orders AS ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY order_id ORDER BY updated_at DESC ) AS rn FROM orders_history ) SELECT order_id, status, updated_at, amount FROM ranked_orders WHERE rn = 1;

Оконные функции всегда помогают в работе с историческими данными, выявлением актуальной строки, удалением дублей, а также задачами версионирования строк.

Ставьте реакции, если стоит делиться больше задачами с собесов аналитиков и аналитиков-инженеров

Больше технических заданий на курсе - старт 14 сентября