Как написать SQL-запрос для профилей, у которых больше 10 постов?

Как написать SQL-запрос для выбора профилей с >10 постами? область: SQL, агрегирование и группировка для подсчета постов применяется агрегатная функция COUNT() GROUP BY используется по профилю (user_id/profile_id)…

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

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

Как написать SQL-запрос для выбора профилей с >10 постами? область: SQL, агрегирование и группировка для подсчета постов применяется агрегатная функция COUNT() GROUP BY используется по профилю (user_id/profile_id) агрегаты нельзя фильтровать через WHERE, поэтому нужен HAVING > 10 пример:

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

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

Как написать SQL-запрос для выбора профилей с >10 постами?

  • область: SQL, агрегирование и группировка
  • для подсчета постов применяется агрегатная функция COUNT()
  • GROUP BY используется по профилю (user_id/profile_id)
  • агрегаты нельзя фильтровать через WHERE, поэтому нужен HAVING > 10
  • пример:
SELECT profile_id
FROM posts
GROUP BY profile_id
HAVING COUNT(*) > 10;

  • эффективно фильтрует по количеству постов
  • полезно для аналитики активности пользователей

Развернутый ответ

Основной ответ

Чтобы получить профили, разместившие более 10 постов, нужно сгруппировать записи по идентификатору профиля с помощью GROUP BY, посчитать их через COUNT() и отфильтровать группы оператором HAVING. Пример стандарта SQL:

SELECT profile_id, COUNT(*) AS post_count
FROM posts
GROUP BY profile_id
HAVING COUNT(*) > 10;

В данном примере предполагается, что таблица posts связана с профилями посредством поля profile_id.

Ключевые аспекты

  • GROUP BY объединяет строки по профилю, благодаря чему можно агрегировать связанные с ним посты
  • HAVING выполняется после группировки, тогда как WHERE отбирает отдельные строки до этапа агрегации
  • Оптимизация: если сведения о профилях находятся в отдельной таблице profiles, можно использовать INNER JOIN и подсчет постов, чтобы вернуть не только ID, но и данные профиля

Практический контекст

Такой SQL-паттерн часто применяют для анализа пользовательской активности, например при формировании рекомендаций для активных авторов. В PostgreSQL 14+ доступны оконные функции, однако для этой задачи обычно достаточно группировки с HAVING: она проще и эффективнее.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку