Число заказов с общей суммой не менее 1000

Отфильтруйте price_total >= 1000 до группировки, посчитайте строки по user_id и отсортируйте COUNT(*) по убыванию.

Короткий ответ

Что ответить на собеседовании

Отфильтруйте price_total >= 1000 до группировки, посчитайте строки по user_id и отсортируйте COUNT(*) по убыванию.

Подробный разбор

Ответ с пояснениями

Условие

Сформулируйте SQL‑запрос, который выдаст количество заказов для каждого клиента, у которых значение price_total составляет 1000 или более. Результат должен быть отсортирован по убыванию количества заказов.

user_id order_count
111 2
222 1
333 1
CREATE TABLE orders (
    id INT,
    user_id INT,
    created_at TIMESTAMP,
    price_total INT
);
orders:
  - id: 1
    user_id: 111
    created_at: "2024-01-01 10:00:00"
    price_total: 2000
  - id: 2
    user_id: 222
    created_at: "2024-01-02 10:00:00"
    price_total: 1000
  - id: 3
    user_id: 111
    created_at: "2024-04-01 10:00:00"
    price_total: 20000
  - id: 4
    user_id: 222
    created_at: "2024-05-01 10:00:00"
    price_total: 500
  - id: 5
    user_id: 333
    created_at: "2024-05-02 10:00:00"
    price_total: 10000

Ответ

Отфильтруйте price_total >= 1000 до группировки, посчитайте строки по user_id и отсортируйте COUNT(*) по убыванию.

Запрос:

SELECT user_id, COUNT(*) AS order_count
FROM orders
WHERE price_total >= 1000
GROUP BY user_id
ORDER BY order_count DESC, user_id;

Для примера результат — 111: 2, 222: 1, 333: 1. Дополнительная сортировка по user_id фиксирует порядок при одинаковом числе заказов. WHERE проверяет сумму каждого отдельного заказа; HAVING SUM(price_total) >= 1000 решал бы другую задачу. Клиенты без подходящих заказов в такой запрос не попадают.

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

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

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

Подробнее