Карточка Junior SQL дата-инженера спрашивают часто обновлено

Шаблон дедупликации

Вопрос

Как оставить одну копию каждого события по event_id, самую позднюю по received_at?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Пронумеровать копии: ROWNUMBER() OVER (PARTITION BY eventid ORDER BY receivedat DESC) AS rn и оставить rn = 1. В PostgreSQL короче: SELECT DISTINCT ON (eventid) FROM e ORDER BY eventid, receivedat DESC.

Ответ

Пронумеровать копии: ROW_NUMBER() OVER (PARTITION BY event_id ORDER BY received_at DESC) AS rn и оставить rn = 1. В PostgreSQL короче: SELECT DISTINCT ON (event_id) * FROM e ORDER BY event_id, received_at DESC.

Разбор

Пронумеровать копии: ROW_NUMBER() OVER (PARTITION BY event_id ORDER BY received_at DESC) AS rn и оставить rn = 1. В PostgreSQL короче: SELECT DISTINCT ON (event_id) * FROM e ORDER BY event_id, received_at DESC.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.