TGViewer
LEFT JOIN Insider LEFT JOIN Insider @leftjoin_insider · 1.43K subscribers
Post #156 1.18K
Тестовое задание на SQL и пересечение диапазонов дат

Сегодня устраиваемся в телеком-команию :-)

Без лишних прелюдий — сразу к условию задачи

Существует таблица абонентов appn_history с историей изменений. Каждая запись по абоненту действует в пределах периода c valid_from_dt по valid_to_dt. По каждому абоненту, в каждый момент времени, должна быть только одна действующая запись.

Необходимо написать запрос, отбирающий записи, которые нарушают условие хранения данных в таблице.

Решение
Запрос должен выявить те случаи, когда для одного абонента существует несколько записей, которые действуют одновременно, то есть пересекаются по временным интервалам valid_from_dt и valid_to_dt.

Вот пример запроса, который делает это

SELECT
a1.subscriber_id,
a1.valid_from_dt,
a1.valid_to_dt,
a2.valid_from_dt AS conflicting_valid_from_dt,
a2.valid_to_dt AS conflicting_valid_to_dt
FROM
appn_history a1
JOIN
appn_history a2
ON
a1.subscriber_id = a2.subscriber_id
AND a1.id <> a2.id -- исключаем сравнение с самой собой
AND a1.valid_from_dt < a2.valid_to_dt
AND a1.valid_to_dt > a2.valid_from_dt
ORDER BY
a1.subscriber_id, a1.valid_from_dt;


Делитесь своими решениями в комментариях или присылайте интересные тестовые, чтобы мы разобрали их в следующих публикациях.

#разбор_тестового

@leftjoin_career
  • 👍 19
  • 🔥 6
  • ❤ 4
More from @leftjoin_insider
  1. Apr 29, 2025Middle Data Engineer в LEFT JOIN У нас появилось несколько новых проектов, поэтому мы снов…
  2. Apr 25, 2025Открыт предзаказ на книгу «Аналитика для руководителей» Про аналитику написано много сложн…
  3. Apr 9, 2025Подводные камни аутсорса: лаги в коммуникации Продолжаем серию постов про трудности, часты…
  4. Apr 2, 2025Что мы поняли, когда сверстали таблицы в Metabase Работа инженера данных каждый день подки…
  5. Mar 26, 2025Вашей маме аналитик не нужен? Или не маме, или не аналитик. В общем, если вы знаете кого-т…
  6. Mar 21, 2025Подводные камни аутсорса: текучка и непредсказуемость Мы работаем в формате аутсорса или а…
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 →