Корректность запросов

Гранулярность результата и уникальность ключа

Содержание курса

0 / 1 баллов

Сумма заказов по клиентам

Что уже дано

Проверяющая система создаёт SQLite-таблицы clients(client_id INTEGER PRIMARY KEY, client_name TEXT) и orders(order_id INTEGER PRIMARY KEY, client_id INTEGER, order_date TEXT NOT NULL, total INTEGER NOT NULL). Данные уже загружены. В clients client_id — положительный идентификатор; разные клиенты могут иметь одинаковые имена. client_name может быть NULL. В orders client_id может быть NULL или ссылаться на отсутствующего клиента. Суммы total заданы целыми числами в копейках от 0 до 2 000 000 000, без NULL. В каждой таблице не более 1000 строк; сумма помещается в 64-битный INTEGER. Даты — непустой TEXT в формате YYYY-MM-DD (календарная дата UTC), без NULL. Идентификаторы заказов уникальны и положительны; client_id, если не NULL, — положительный INTEGER.

Что нужно сделать

Напишите запрос: одна строка на каждого клиента из clients, у которого найден хотя бы один заказ с равным client_id. Верните сумму всех его заказов. Клиентов без найденных заказов и заказы без найденного клиента не включайте. Ключ результата — client_id.

Ввод и вывод

Отправьте один SELECT или WITH-запрос; stdin и печать не используются. Ровно три столбца в таком порядке: client_id (INTEGER), client_name (TEXT или NULL, исходное имя без замены), total_sum (INTEGER). Имена выходных столбцов — как указано. Строки отсортированы по client_id по возрастанию. Если подходящих клиентов нет, результат пуст. В отображении тестов NULL выглядит как пустое поле, столбцы разделены |. Допускается любое эквивалентное решение.

После решения можно самостоятельно обернуть результат в CTE и проверить повторы client_id через GROUP BY/HAVING; на проверку отправляется сам отчёт, а не диагностический запрос.

О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Дополнительная подготовка SQLite
    INSERT INTO clients VALUES
    (1,'Аня'),
    (2,'Борис'),
    (3,'Вера');
    INSERT INTO orders VALUES
    (101,1,'2026-01-10',600),
    (102,1,'2026-01-10',400),
    (103,1,'2026-01-11',200),
    (104,2,'2026-01-10',900),
    (105,999,'2026-01-10',700);
    
    Ожидаемый результат SQLite
    1|Аня|1200
    2|Борис|900
    
Практика SQLite 3

Запрос выполняется в изолированной SQLite-базе через Modal. Скрытые проверки могут добавлять свои строки перед запуском решения.

РешениеSQL · SQL / SQLite 3 (Modal)

Отправьте решение, чтобы увидеть результаты тестов.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.