Postgresql найти по количеству, присоединился к таблице - PullRequest
0 голосов
/ 30 марта 2020

дано 3 таблицы. Мне нужно построить запрос SQL, чтобы найти двух актеров, которые ЛЮБИЛИСЬ ВМЕСТЕ, и перечислить названия этих фильмов. Сортировка по алфавиту https://www.db-fiddle.com/f/r2Y9CpH8n7MHTeBaqEHe9S/0

Данные для воспроизведения приведены ниже:

create table film_actor
(
    actor_id integer,
    film_id integer
)
;

create table film
(
    film_id integer,
    title varchar
)
;

create table actor
(
    actor_id integer,
    first_name varchar,
    last_name varchar
)
;



INSERT INTO public.film_actor (actor_id, film_id) VALUES (1, 1);
INSERT INTO public.film_actor (actor_id, film_id) VALUES (1, 2);
INSERT INTO public.film_actor (actor_id, film_id) VALUES (1, 3);
INSERT INTO public.film_actor (actor_id, film_id) VALUES (2, 1);
INSERT INTO public.film_actor (actor_id, film_id) VALUES (2, 2);
INSERT INTO public.film_actor (actor_id, film_id) VALUES (2, 3);
INSERT INTO public.film_actor (actor_id, film_id) VALUES (3, 1);
INSERT INTO public.film (film_id, title) VALUES (1, 'First');
INSERT INTO public.film (film_id, title) VALUES (2, 'Second');
INSERT INTO public.film (film_id, title) VALUES (3, 'Third');
INSERT INTO public.film (film_id, title) VALUES (4, 'Fourth');
INSERT INTO public.actor (actor_id, first_name, last_name) VALUES (1, 'John', 'Snow');
INSERT INTO public.actor (actor_id, first_name, last_name) VALUES (2, 'Spider', 'Man');
INSERT INTO public.actor (actor_id, first_name, last_name) VALUES (3, 'Mike', 'Kameron');

1 Ответ

0 голосов
/ 30 марта 2020

Это то, что вы ищете?

with acting_pairs as (
    select a1.actor_id as a1_id, a2.actor_id as a2_id
    from film_actor a1
             join film_actor a2 on a1.film_id = a2.film_id
    where a1.actor_id < a2.actor_id
)
select a1_id, a2_id, count(*) as total
from acting_pairs
group by (a1_id, a2_id)
order by total desc
limit 1

Было бы неплохо дать нам ожидаемый результат для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...