Список курьеров из Санкт‑Петербурга с минимум двумя невыполненными заказами

Соедините 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 способен размножить подсчёт.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее