Выбери профили, у которых больше 10 постов

4. Выбрать профили, у которых больше 10 постов

Условие задачи:
Даны таблицы профилей, постов и количества подписок.

Необходимо выбрать профили, у которых опубликовано больше 10 постов.

Код:

CREATE TABLE profile (
    id BIGSERIAL PRIMARY KEY,
    nickname VARCHAR,
    registered_at TIMESTAMP
);

CREATE TABLE post (
    id BIGSERIAL PRIMARY KEY,
    owner_id BIGINT REFERENCES profile(id),
    body TEXT,
    inserted_at TIMESTAMP,
    likes_count INT
);

CREATE TABLE subscription_count (
    profile_id BIGINT REFERENCES profile(id) UNIQUE,
    followers_count INT,
    following_count INT
);

Спойлеры к решению

Подсказки
💡 Соедини profile и post по profile.id = post.owner_id.
💡 Сгруппируй записи по профилю.
💡 Количество постов можно получить через COUNT().
💡 Для фильтрации после группировки используй HAVING.

Решение
SELECT
    p.id,
    p.nickname
FROM profile p
JOIN post po
    ON po.owner_id = p.id
GROUP BY p.id, p.nickname
HAVING COUNT(po.id) > 10;

JOIN связывает каждый профиль с его постами.

После этого строки группируются по профилю, а условие:

HAVING COUNT(po.id) > 10

оставляет только профили, у которых опубликовано больше 10 постов.

Таблица subscription_count для решения этой задачи не требуется.