Карточка 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 ошибок.