Соедините post с subscription_count по owner_id/profile_id и отфильтруйте followers_count > 500. Таблица profile для этой выборки не обязательна.
Получение всех записей от пользователей, у которых более 500 подписчиков
Соедините post с subscription_count по owner_id/profile_id и отфильтруйте followers_count > 500. Таблица profile для этой выборки не обязательна.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо вывести все записи (посты), которые созданы пользователями, чей показатель подписчиков превышает 500. Имеются три таблицы: profile, post и subscription_count.
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_ar TIMESTAMP,
likes-count INT // кол-во лайков
);
CREATE TABLE subscription_count
(
profile_id BIGINT REFERENCES profile (id) UNIQUE,
followers_count INT, // кол-во подписчиков
following_coint INT // кол-во подписчиков
);
Ответ
Соедините post с subscription_count по owner_id/profile_id и отфильтруйте followers_count > 500. Таблица profile для этой выборки не обязательна.
SELECT p.*
FROM post p
JOIN subscription_count s ON s.profile_id = p.owner_id
WHERE s.followers_count > 500;
UNIQUE(profile_id) не позволит одному посту размножиться из-за нескольких строк счётчика. Автор с ровно 500 подписчиками не подходит. Исходный PostgreSQL DDL содержит синтаксические ошибки: likes-count нужно переименовать, например в likes_count, а комментарии писать через --, не //. following_coint не нужен запросу; судя по смыслу, это количество подписок пользователя, не его подписчиков.