Последняя запись в группе SQL: заказ каждого клиента

Максимальная дата и строка с максимальной датой — разные результаты. Если нужны поля последнего заказа, одного MAX(order_date) недостаточно: нужно сохранить связь с исходной строкой.

Проверьте случай двух заказов в один день. Условие может требовать дополнительный ключ для однозначного выбора. Не объединяйте независимо максимальные значения разных столбцов: такая комбинация могла никогда не существовать в таблице.

Проверьте решение без регистрации. Объяснения и последовательная практика — в курсе «SQL с нуля: бесплатный курс с практикой».

Последний заказ каждого клиента

В таблицах хранится информация о клиентах и их заказах. Иногда нужно быстро понять, чем закончилось взаимодействие каждого клиента с магазином — то есть найти именно тот заказ, который был оформлен последним.

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

Запрос должен возвращать пять столбцов: customer_id, name, order_id, order_date и total_amount — ровно по одной строке на клиента. Итоговый результат упорядочивается по customer_id по возрастанию.

Пример

Подготовка данных
INSERT INTO customers (customer_id, name) VALUES (1, 'Anna'), (2, 'Boris'), (3, 'Vera'); INSERT INTO orders (order_id, customer_id, order_date, total_amount) VALUES (101, 1, '2026-01-01', 100), (102, 1, '2026-01-05', 200), (103, 1, '2026-01-05', 250), (201, 2, '2026-01-03', 500);
Вывод
1|Anna|103|2026-01-05|250
2|Boris|201|2026-01-03|500
РешениеSQL · SQLite

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

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

Связанные задачи