Соедините riders с deliveries, отберите Санкт-Петербург и недоставленные заказы, сгруппируйте по курьеру и оставьте COUNT(*) >= 2.
Список курьеров из Санкт‑Петербурга с минимум двумя невыполненными заказами
Соедините riders с deliveries, отберите Санкт-Петербург и недоставленные заказы, сгруппируйте по курьеру и оставьте COUNT(*) >= 2.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Найдите всех доставщиков, работающих в городе Санкт‑Петербург, у которых количество заказов со статусом, отличным от "доставлен", составляет не менее двух.
CREATE TABLE deliveries (
id INT,
rider_id INT,
status VARCHAR(20)
);
CREATE TABLE riders (
id INT,
city VARCHAR(100)
);
Ответ
Соедините riders с deliveries, отберите Санкт-Петербург и недоставленные заказы, сгруппируйте по курьеру и оставьте COUNT(*) >= 2.
SELECT r.id, r.city, COUNT(*) AS unfinished_count
FROM riders r
JOIN deliveries d ON d.rider_id = r.id
WHERE r.city = 'Санкт-Петербург'
AND d.status <> 'доставлен'
GROUP BY r.id, r.city
HAVING COUNT(*) >= 2;
NULL-статус здесь не проходит сравнение. Если он тоже означает невыполненный заказ, добавьте OR d.status IS NULL в скобках. Предполагается уникальность riders.id; её нужно закрепить, иначе join способен размножить подсчёт.