Task Livecoding SQL Top Sms Recipients

19. Топ-10 телефонов, получивших больше всего SMS #

Условие задачи:
📌 Написать SQL-запрос для получения номеров телефонов (phone), которые получили более одной SMS.

  • Отсортировать список по убыванию количества сообщений.
  • Оставить только топ-10 номеров с наибольшим количеством полученных SMS.
table: sms
id   | phone      | message
1    | 9876552222 | some message
2    | 9876552222 | some message
3    | 9876552234 | another message
Спойлеры к решению
Подсказки
💡 Используй GROUP BY, чтобы сгруппировать данные по phone.
💡 HAVING COUNT(*) > 1 поможет отфильтровать только те номера, у которых более одной SMS.
💡 ORDER BY COUNT(*) DESC обеспечит сортировку от большего количества к меньшему.
💡 LIMIT 10 позволит оставить только топ-10 номеров.
Решение
SELECT phone, COUNT(*) AS sms_count
FROM sms
GROUP BY phone
HAVING COUNT(*) > 1
ORDER BY sms_count DESC
LIMIT 10;

Объяснение решения:

  • GROUP BY phone – группируем записи по номерам телефонов.
  • COUNT(*) AS sms_count – считаем количество сообщений для каждого номера.
  • HAVING COUNT(*) > 1 – фильтруем только те номера, у которых больше одной SMS.
  • ORDER BY sms_count DESC – сортируем по убыванию количества сообщений.
  • LIMIT 10 – оставляем только 10 самых популярных получателей.

🔥 Теперь можно быстро найти топ-10 номеров, получивших больше всего SMS! 📲🚀