TGViewer
DataДжунгли🌳 DataДжунгли🌳 @data_jungle · 286 subscribers
Post #108 523
Поиск отличий между таблицами («дифф»)

#SQLWednesday

👯‍♂️ Две таблицы заходят в бар… и нужно понять, чем они отличаются.
Классика собесов - сравнить два снапшота данных.


Есть таблицы:
• Customers_2024
• Customers_2025

Нужно:
1. Кто появился новым?
2. Кто удалился?
3. У кого изменились данные?


-- Новые клиенты (есть в 2025, нет в 2024)
SELECT c2025.id, c2025.name
FROM Customers_2025 c2025
LEFT JOIN Customers_2024 c2024 ON c2024.id = c2025.id
WHERE c2024.id IS NULL;

-- Удалённые клиенты (были, но пропали)
SELECT c2024.id, c2024.name
FROM Customers_2024 c2024
LEFT JOIN Customers_2025 c2025 ON c2025.id = c2024.id
WHERE c2025.id IS NULL;

-- Изменения в данных (id совпал, поля разные)
SELECT c2024.id,
c2024.name AS old_name,
c2025.name AS new_name
FROM Customers_2024 c2024
JOIN Customers_2025 c2025 ON c2025.id = c2024.id
WHERE c2024.name <> c2025.name; -- вот тут будет ошибка если NULL поэтому будьте аккуратны


Что тут важно:
• JOIN-ы вместо минусов - так быстрее и прозрачнее.
• Для сравнения всех полей можно собрать CHECKSUM(*) или HASHBYTES (SQL Server) / md5(row::text) (Postgres).
• Не забудьте про NULL: <> не работает, используйте IS DISTINCT FROM (Postgres) или EXCEPT для простого диффа.

Конечно все это уже давно решается с помощью SCD но это задача с собеседований на DE не редкость.

🔥 Такой «diff» помогает искать не только ошибки загрузки, но и баги в ETL, поэтому это валидно и для анализа и для DE.

#SQL #DataDiff #ETL #DataJungle
  • 🔥 7
  • 👍 1
More from @data_jungle
  1. Sep 29, 2026Мы уже проводим не первое интервью кандидатов на работе и вот что я могу посоветовать вам…
  2. Sep 11, 2026Неужели литкод это начало конца ? Google сменил стратегию интервью:) Что думаете обсудим ?
  3. Sep 1, 2026Всем привет 👋 Очень советую посмотреть это видео на ютубчике. Всегда с большим интересом…
  4. Aug 7, 2026🔍 Как читать план запроса: EXPLAIN, оценки и почему оптимизатор врёт #SQLWednesday В пост…
  5. Aug 3, 2026🧱 Parquet под капотом: почему «размер файла имеет значение» Мы шли сверху вниз: разделили…
  6. Jul 31, 2026🏝️ Gaps & Islands: как из потока событий собрать сессии одним оконным трюком #SQLWednesda…
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 →