SQL: Сверка отчётов по ключам и показателям — Состав договоров и число неопознанных оплат
Практическая задача по SQL на тему «Сверка отчётов по ключам и показателям». В условии приведены схема таблиц, ограничения данных, имена столбцов результата и порядок сортировки. Напишите один SELECT или WITH-запрос для SQLite. Перед проверкой продумайте пустой результат, повторяющиеся строки и границы диапазонов, если они встречаются в условии. Проверяется результат запроса, поэтому допустима эквивалентная реализация. Сначала решите задачу самостоятельно; продолжение практики доступно в полном курсе продвинутого SQL.
Состав договоров и число неопознанных оплат
Что уже дано
Таблицы contracts(contract_id INTEGER PRIMARY KEY) и payments(payment_id INTEGER PRIMARY KEY, contract_id INTEGER NOT NULL). До 500 строк в каждой. ID положительные. Оплата может ссылаться на отсутствующий договор; несколько оплат одного договора являются разными записями.
Что нужно сделать
Сверьте состав ключей с обеих сторон. Выведите по одной строке для каждого contract_id, который есть только в одной стороне. discrepancy_type — missing_in_payments для договора без единой оплаты либо missing_in_contracts для оплат неизвестного договора. payment_count — число записей payments с этим contract_id; для договора без оплат 0. Известный договор хотя бы с одной оплатой не является расхождением.
Ввод и вывод
Отправьте один SELECT или WITH-запрос; stdin и печать не используются. Ровно 3 столбцов в указанном порядке и с этими именами: contract_id, discrepancy_type, payment_count. contract_id и payment_count — INTEGER; discrepancy_type — TEXT; NULL нет. Сортировка: contract_id ASC. При совпадении наборов ключей результат пустой. В тестовых результатах разделитель |, NULL — пустое поле. Допускается любой эквивалентный запрос.
Пример
- Подготовка данных
INSERT INTO contracts VALUES (1),(2),(4); INSERT INTO payments VALUES (1,1),(2,3),(3,3),(4,5);
- Вывод
2|missing_in_payments|0 3|missing_in_contracts|2 4|missing_in_payments|0 5|missing_in_contracts|1
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- SQL: Агрегация, оконные вычисления и фильтрация — Категории-лидеры и доля в продажах
- SQL: SELF JOIN и поиск уникальных пар — Пары с несколькими общими проектами
- SQL: Календарная таблица и пропущенные даты — Непрерывный отчёт о звонках
- SQL: Объединение перекрывающихся интервалов — Объединённая занятость внутри отчётного окна
- SQL: Подсчёт одновременно активных интервалов — Максимальное число занятых столов
- SQL: EXPLAIN QUERY PLAN в SQLite — Сводка ошибок и их доля по сервисам
