Репозиторий для проекта Filmorate.
https://dbdiagram.io/d/66cd4a9f3f611e76e99165ef
CREATE TABLE "genre" (
"film_id" int PRIMARY KEY,
"name" varchar
);
CREATE TABLE "film_genre" (
"film_id" bigint,
"genre_id" bigint,
PRIMARY KEY ("film_id", "genre_id")
);
CREATE TABLE "users" (
"film_id" bigint PRIMARY KEY,
"name" varchar,
"login" varchar,
"email" varchar,
"birthday" data
);
CREATE TABLE "likes" (
"film_id" bigint,
"user_id" bigint,
PRIMARY KEY ("film_id", "user_id")
);
CREATE TABLE "mpa" (
"film_id" int PRIMARY KEY,
"name" varchar
);
CREATE TABLE "friends" (
"user_id" bigint,
"user_friend_id" bigint,
"status" bool,
PRIMARY KEY ("user_id", "user_friend_id")
);
CREATE TABLE "films" (
"film_id" bigint PRIMARY KEY,
"name" varchar,
"description" varchar,
"release_date" date,
"duration" int,
"mpa_id" int
);
ALTER TABLE "film_genre" ADD FOREIGN KEY ("genre_id") REFERENCES "genre" ("film_id");
ALTER TABLE "film_genre" ADD FOREIGN KEY ("film_id") REFERENCES "films" ("film_id");
ALTER TABLE "films" ADD FOREIGN KEY ("mpa_id") REFERENCES "mpa" ("film_id");
ALTER TABLE "likes" ADD FOREIGN KEY ("film_id") REFERENCES "films" ("film_id");
ALTER TABLE "likes" ADD FOREIGN KEY ("user_id") REFERENCES "users" ("film_id");
ALTER TABLE "friends" ADD FOREIGN KEY ("user_friend_id") REFERENCES "users" ("film_id");
ALTER TABLE "friends" ADD FOREIGN KEY ("user_id") REFERENCES "users" ("film_id");
Получение списка самых популярных фильмов:
SELECT f.* FROM films f
JOIN likes l ON f.ID = l.film_id
GROUP BY f.id
ORDER BY COUNT(l.user_id) DESC"