Получение всех записей от пользователей, у которых более 500 подписчиков

Соедините post с subscription_count по owner_id/profile_id и отфильтруйте followers_count > 500. Таблица profile для этой выборки не обязательна.

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

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

Соедините 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 не нужен запросу; судя по смыслу, это количество подписок пользователя, не его подписчиков.

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

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

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

Подробнее