Топ‑10 номеров, получивших наибольшее количество SMS

Сгруппируйте SMS по phone_number, оставьте группы с COUNT(*) > 1, отсортируйте по убыванию счётчика и примените LIMIT 10.

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

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

Сгруппируйте SMS по phone_number, оставьте группы с COUNT(*) > 1, отсортируйте по убыванию счётчика и примените LIMIT 10.

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

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

Условие

Таблица sms содержит отправленные сообщения.

  • Сформировать запрос, который выводит телефонные номера, получившие более одной SMS.
  • Отсортировать результаты так, чтобы сначала шли номера с максимальным количеством полученных сообщений.
  • Оставить в выдаче только десять самых часто получающих SMS номеров.
CREATE TABLE sms (
    id BIGSERIAL PRIMARY KEY,
    phone_number VARCHAR(255),
    message VARCHAR(1024)
)

Ответ

Сгруппируйте SMS по phone_number, оставьте группы с COUNT(*) > 1, отсортируйте по убыванию счётчика и примените LIMIT 10.

SELECT phone_number, COUNT(*) AS received_count
FROM sms
WHERE phone_number IS NOT NULL
GROUP BY phone_number
HAVING COUNT(*) > 1
ORDER BY received_count DESC, phone_number
LIMIT 10;

Дополнительная сортировка по номеру делает выборку стабильной при равных счётчиках. NULL исключён, поскольку не обозначает телефонный номер. Запрос считает записи таблицы, а не подтверждённые доставки: для последнего потребовалось бы отдельное поле статуса. Все номера сверх первых десяти, даже с одинаковой частотой на границе, не попадут в результат.

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

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

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

Подробнее