From 13ed5153a0387c1e1d38ed975054bd8a4b842114 Mon Sep 17 00:00:00 2001 From: Aynur19 Date: Sun, 1 Nov 2020 22:53:14 +0300 Subject: [PATCH 1/6] Add sql-scripts by homeworks 1 and 2 --- homeworks/hw1_db-initialize.sql | 180 ++++++++++++++++++++++++++++++++ homeworks/hw2_select.sql | 63 +++++++++++ 2 files changed, 243 insertions(+) create mode 100644 homeworks/hw1_db-initialize.sql create mode 100644 homeworks/hw2_select.sql diff --git a/homeworks/hw1_db-initialize.sql b/homeworks/hw1_db-initialize.sql new file mode 100644 index 0000000..96dc770 --- /dev/null +++ b/homeworks/hw1_db-initialize.sql @@ -0,0 +1,180 @@ +-- Удаляем таблицы если они уже есть. +DROP TABLE IF EXISTS kinopoisk_data; +DROP TABLE IF EXISTS person2content; +DROP TABLE IF EXISTS films; +DROP TABLE IF EXISTS persons; + +-- Создаем таблицу 'films'. +CREATE TABLE films ( + id SERIAL PRIMARY KEY, + title VARCHAR(128), + country VARCHAR(64), + box_office BIGINT, + release_date DATE +); + +-- Создаем таблицу 'persons'. +CREATE TABLE persons ( + id SERIAL PRIMARY KEY, + fio VARCHAR(128) unique +); + +-- Создаем таблицу 'person2person'. +CREATE TABLE person2content ( + person_id INT NOT NULL, + film_id INT NOT NULL, + person_type VARCHAR(64), + PRIMARY KEY(person_id, film_id, person_type), + FOREIGN KEY(person_id) REFERENCES persons (id), + FOREIGN KEY(film_id) REFERENCES films (id) +); + +-- Создаем временную таблицу 'kinopoisk_data'. +CREATE temp TABLE kinopoisk_data( + id SERIAL PRIMARY KEY, + title VARCHAR(128), + person_fio VARCHAR(128), + person_type VARCHAR(64) +); + + Добавление данных по фильму. +INSERT INTO films(title, country, box_office, release_date) VALUES + ('Отступники', 'США', 291465034, to_date('2006-09-26', 'YYYY-MM-DD')) + ,('Матрица', 'США', 463517383, to_date('1999-03-24', 'YYYY-MM-DD')) + ,('Властелин колец: Возвращение Короля', 'Новая Зеландия, США', 1118887224, to_date('2003-12-01', 'YYYY-MM-DD')) + ,('Интерстеллар', 'США, Великобритания, Канада', 677463813, to_date('2014-10-26', 'YYYY-MM-DD')) + ,('Начало', 'США, Великобритания', 828322032, to_date('2010-07-08', 'YYYY-MM-DD')); + + Создание временные данные. +WITH persons_data(title, person_type, fio) AS (VALUES + ('Отступники', 'Режиссер', 'Мартин Скорсезе') + ,('Отступники', 'Сценарист', 'Уильям Монахэн') + ,('Отступники', 'Сценарист', 'Алан Мак') + ,('Отступники', 'Сценарист', 'Феликс Чон') + ,('Отступники', 'Продюсер', 'Брэд Грэй') + ,('Отступники', 'Продюсер', 'Грэм Кинг') + ,('Отступники', 'Продюсер', 'Джанни Нуннари') + ,('Отступники', 'Оператор', 'Михаэль Балльхаус') + ,('Отступники', 'Композитор', 'Говард Шор') + ,('Отступники', 'Художник', 'Кристи Зиа') + ,('Отступники', 'Художник', 'Тереза Кэррикер-Тейер') + ,('Отступники', 'Художник', 'Сэнди Пауэлл') + ,('Отступники', 'Монтаж', 'Тельма Скунмейкер') + ,('Отступники', 'Актер', 'Леонардо ДиКаприо') + ,('Отступники', 'Актер', 'Мэтт Дэймон') + ,('Отступники', 'Актер', 'Джек Николсон') + ,('Отступники', 'Актер', 'Марк Уолберг') + ,('Отступники', 'Актер', 'Мартин Шин') + ,('Отступники', 'Актер', 'Рэй Уинстон') + ,('Отступники', 'Актриса', 'Вера Фармига') + ,('Отступники', 'Актер', 'Энтони Андерсон') + ,('Отступники', 'Актер', 'Алек Болдуин') + ,('Отступники', 'Актер', 'Кевин Корригэн') + ,('Матрица','Режиссер','Лана Вачовски') + ,('Матрица','Режиссер','Лилли Вачовски') + ,('Матрица','Сценарист','Лана Вачовски') + ,('Матрица','Сценарист','Лилли Вачовски') + ,('Матрица','Продюсер','Джоэл Силвер') + ,('Матрица','Продюсер','Брюс Берман') + ,('Матрица','Продюсер','Дэн Краччиоло') + ,('Матрица','Оператор','Билл Поуп') + ,('Матрица','Композитор','Дон Дэвис') + ,('Матрица','Художник','Оуэн Патерсон') + ,('Матрица','Художник','Хью Бэйтап') + ,('Матрица','Художник','Мишель МакГэхи') + ,('Матрица','Монтаж','Зак Стэнберг') + ,('Матрица','Актер','Киану Ривз') + ,('Матрица','Актер','Лоренс Фишбёрн') + ,('Матрица','Актриса','Кэрри-Энн Мосс') + ,('Матрица','Актер','Хьюго Уивинг') + ,('Матрица','Актриса','Глория Фостер') + ,('Матрица','Актер','Джо Пантольяно') + ,('Матрица','Актер','Маркус Чонг') + ,('Матрица','Актер','Джулиан Араханга') + ,('Матрица','Актер','Мэтт Доран') + ,('Матрица','Актриса','Белинда МакКлори') + ,('Властелин колец: Возвращение Короля','Режиссер','Питер Джексон') + ,('Властелин колец: Возвращение Короля','Сценарист','Фрэн Уолш') + ,('Властелин колец: Возвращение Короля','Сценарист','Филиппа Бойенс') + ,('Властелин колец: Возвращение Короля','Сценарист','Питер Джексон') + ,('Властелин колец: Возвращение Короля','Продюсер','Питер Джексон') + ,('Властелин колец: Возвращение Короля','Продюсер','Барри М. Осборн') + ,('Властелин колец: Возвращение Короля','Продюсер','Фрэн Уолш') + ,('Властелин колец: Возвращение Короля','Оператор','Эндрю Лесни') + ,('Властелин колец: Возвращение Короля','Композитор','Говард Шор') + ,('Властелин колец: Возвращение Короля','Художник','Грант Мейджор') + ,('Властелин колец: Возвращение Короля','Художник','Джо Бликли') + ,('Властелин колец: Возвращение Короля','Художник','Саймон Брайт') + ,('Властелин колец: Возвращение Короля','Монтаж','Джэми Селкирк') + ,('Властелин колец: Возвращение Короля','Актер','Элайджа Вуд') + ,('Властелин колец: Возвращение Короля','Актер','Вигго Мортенсен') + ,('Властелин колец: Возвращение Короля','Актер','Шон Эстин') + ,('Властелин колец: Возвращение Короля','Актер','Иэн Маккеллен') + ,('Властелин колец: Возвращение Короля','Актер','Орландо Блум') + ,('Властелин колец: Возвращение Короля','Актер','Доминик Монахэн') + ,('Властелин колец: Возвращение Короля','Актер','Билли Бойд') + ,('Властелин колец: Возвращение Короля','Актер','Энди Серкис') + ,('Властелин колец: Возвращение Короля','Актриса','Миранда Отто') + ,('Властелин колец: Возвращение Короля','Актер','Бернард Хилл') + ,('Интерстеллар','Режиссер','Кристофер Нолан') + ,('Интерстеллар','Сценарист','Кристофер Нолан') + ,('Интерстеллар','Сценарист','Джонатан Нолан') + ,('Интерстеллар','Продюсер','Кристофер Нолан') + ,('Интерстеллар','Продюсер','Линда Обст') + ,('Интерстеллар','Продюсер','Эмма Томас') + ,('Интерстеллар','Оператор','Хойте Ван Хойтема') + ,('Интерстеллар','Композитор','Ханс Циммер') + ,('Интерстеллар','Художник','Нэйтан Краули') + ,('Интерстеллар','Художник','Кенделл Эллиотт') + ,('Интерстеллар','Художник','Эггерт Кетилссон') + ,('Интерстеллар','Монтаж','Ли Смит') + ,('Интерстеллар','Актер','Мэттью МакКонахи') + ,('Интерстеллар','Актриса','Энн Хэтэуэй') + ,('Интерстеллар','Актриса','Джессика Честейн') + ,('Интерстеллар','Актер','Маккензи Фой') + ,('Интерстеллар','Актер','Майкл Кейн') + ,('Интерстеллар','Актер','Дэвид Гяси') + ,('Интерстеллар','Актер','Уэс Бентли') + ,('Интерстеллар','Актер','Кейси Аффлек') + ,('Интерстеллар','Актер','Джон Литгоу') + ,('Интерстеллар','Актер','Мэтт Дэймон') + ,('Начало','','Маккензи Фой') + ,('Начало','Режиссер','Кристофер Нолан') + ,('Начало','Сценарист','Кристофер Нолан') + ,('Начало','Продюсер','Кристофер Нолан') + ,('Начало','Продюсер','Эмма Томас') + ,('Начало','Продюсер','Закария Алауи') + ,('Начало','Оператор','Уолли Пфистер') + ,('Начало','Композитор','Ханс Циммер') + ,('Начало','Художник','Гай Диасй') + ,('Начало','Художник','Люк Фриборн') + ,('Начало','Художник','Мэттью Грэй') + ,('Начало','Монтаж','Ли Смит') + ,('Начало','Актер','Леонардо ДиКаприо') + ,('Начало','Актриса','Эллен Пейдж') + ,('Начало','Актер','Джозеф Гордон-Левитт') + ,('Начало','Актер','Том Харди') + ,('Начало','Актер','Кэн Ватанабэ') + ,('Начало','Актер','Дилип Рао') + ,('Начало','Актер','Киллиан Мёрфи') + ,('Начало','Актер','Том Беренджер') + ,('Начало','Актриса','Марион Котийяр') + ,('Начало','Актер','Пит Постлетуэйт')) + + +-- Заполняем временную таблицу 'kinopoisk_data' значениями (Название фильма, тип персоны, ФИО персоны) +INSERT INTO kinopoisk_data(title, person_type, person_fio) + SELECT pd.title, pd.person_type, pd.fio + FROM persons_data pd; + +-- Заполняем таблицу 'persons'. +INSERT INTO persons(fio) + SELECT kd.person_fio + FROM kinopoisk_data kd ON CONFLICT(fio) DO NOTHING; + +-- Заполнение таблицы 'person2person'. +INSERT INTO person2content(film_id, person_id, person_type) + SELECT films.id, persons.id, kd.person_type + FROM kinopoisk_data kd + LEFT JOIN films ON films.title = kd.title + LEFT JOIN persons ON persons.fio = kd.person_fio diff --git a/homeworks/hw2_select.sql b/homeworks/hw2_select.sql new file mode 100644 index 0000000..fc6ade2 --- /dev/null +++ b/homeworks/hw2_select.sql @@ -0,0 +1,63 @@ +SELECT 'ФИО: Насыбуллин А. А.'; + +-- Запрос №1.1 +SELECT * + FROM movie.ratings + LIMIT 10; + +-- Запрос №1.2 +SELECT * + FROM movie.links + WHERE + imdbid LIKE '%42' + AND movieid > 100 + AND movieid < 1000; + +-- Запрос №2.1 +SELECT imdbid + FROM movie.links + INNER JOIN movie.ratings + ON movie.ratings.movieid = movie.links.movieid + WHERE + movie.ratings.rating = 5 + LIMIT 10; + +-- Запрос №3.1. Фильмов без оценок нет. Произвольный запрос +SELECT COUNT(*) AS movies_count + FROM movie.ratings + WHERE rating >= 4.5; + +-- Запрос №3.2 +SELECT userid, AVG(rating) AS avg_ratings + FROM movie.ratings + GROUP BY userid + HAVING + AVG(rating) > 3.5 + ORDER BY avg_ratings DESC + LIMIT 10; + +-- Запрос №4.1 +SELECT imdbid + FROM movie.links + WHERE + movieid IN ( + SELECT movieid + FROM movie.ratings + GROUP BY movieid + HAVING + AVG(rating) > 3.5 + LIMIT 10 + ); + +-- Запрос №4.2 +WITH user_ratings_more_10 AS ( + SELECT AVG(rating) AS avg_rating + FROM movie.ratings + GROUP BY userid + HAVING + COUNT(rating) > 10 +) + +SELECT AVG(avg_rating) + FROM user_ratings_more_10 + From 651459f2ca60c8eb2c58bea181c0dec0ac3cb65d Mon Sep 17 00:00:00 2001 From: Aynur19 Date: Sun, 8 Nov 2020 19:24:32 +0300 Subject: [PATCH 2/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=203.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- homeworks/hw2_select.sql | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/homeworks/hw2_select.sql b/homeworks/hw2_select.sql index fc6ade2..306b0f4 100644 --- a/homeworks/hw2_select.sql +++ b/homeworks/hw2_select.sql @@ -22,10 +22,12 @@ SELECT imdbid movie.ratings.rating = 5 LIMIT 10; --- Запрос №3.1. Фильмов без оценок нет. Произвольный запрос -SELECT COUNT(*) AS movies_count - FROM movie.ratings - WHERE rating >= 4.5; +-- Запрос №3.1. +SELECT DISTINCT COUNT(*) + FROM movie.links lnk + LEFT JOIN movie.ratings rtg + ON rtg.movieid = lnk.movieid + WHERE rtg.movieid IS NULL -- Запрос №3.2 SELECT userid, AVG(rating) AS avg_ratings From e1fb78545aa0ec748bc26520f9b312a649dd573a Mon Sep 17 00:00:00 2001 From: Aynur19 Date: Mon, 30 Nov 2020 12:54:10 +0300 Subject: [PATCH 3/6] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D0=BA=203-=D0=B5?= =?UTF-8?q?=D0=B9=20=D0=B4=D0=BE=D0=BC=D0=B0=D1=88=D0=BD=D0=B5=D0=B9=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1 | 0 homeworks/hw2_select.sql | 2 +- homeworks/hw3_select_partition.sql | 13 +++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 1 create mode 100644 homeworks/hw3_select_partition.sql diff --git a/1 b/1 new file mode 100644 index 0000000..e69de29 diff --git a/homeworks/hw2_select.sql b/homeworks/hw2_select.sql index 306b0f4..3135a96 100644 --- a/homeworks/hw2_select.sql +++ b/homeworks/hw2_select.sql @@ -27,7 +27,7 @@ SELECT DISTINCT COUNT(*) FROM movie.links lnk LEFT JOIN movie.ratings rtg ON rtg.movieid = lnk.movieid - WHERE rtg.movieid IS NULL + WHERE rtg.movieid IS NULL; -- Запрос №3.2 SELECT userid, AVG(rating) AS avg_ratings diff --git a/homeworks/hw3_select_partition.sql b/homeworks/hw3_select_partition.sql new file mode 100644 index 0000000..0e64f5b --- /dev/null +++ b/homeworks/hw3_select_partition.sql @@ -0,0 +1,13 @@ +SELECT userid, movieid, + ((rating + - MIN(rating) OVER (PARTITION BY userId)) + /(MAX(rating) OVER (PARTITION BY userId) + - MIN(rating) OVER (PARTITION BY userId))) as normed_rating, + AVG(rating) OVER (PARTITION BY userId) as avg_rating + FROM ( + SELECT DISTINCT userid, movieId, rating + FROM movie.ratings + WHERE userId <> 1 + LIMIT 3000 + ) as sample + ORDER BY userid LIMIT 30; \ No newline at end of file From 6bd8145f1c93073837163e0674616c241c57f759 Mon Sep 17 00:00:00 2001 From: Aynur19 Date: Mon, 30 Nov 2020 15:00:46 +0300 Subject: [PATCH 4/6] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20sql-=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D0=BF=D0=BE=204-?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=B4=D0=BE=D0=BC=D0=B0=D1=88=D0=BD=D0=B5=D0=B9?= =?UTF-8?q?=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B5=20=D0=94=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BF=D1=83=D1=82=D1=8C=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=D1=81=D1=82=D0=B3=D1=80=D0=B8=20=D0=B2=20docker-co?= =?UTF-8?q?mpose,=20=D1=87=D1=82=D0=BE=D0=B1=D1=8B=20=D0=BC=D0=BE=D0=B6?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B1=D1=8B=D0=BB=D0=BE=20=D0=B2=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D1=8F=D1=82=D1=8C=20=D1=81=D0=BA=D1=80=D0=B8?= =?UTF-8?q?=D0=BF=D1=82=D1=8B=20=D1=87=D0=B8=D1=81=D1=82=D0=BE=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81?= =?UTF-8?q?=20=D0=BF=D0=BE=D1=81=D1=82=D0=B3=D1=80=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker_compose/docker-compose.yml | 1 + homeworks/hw4_ETL.sql | 55 +++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 homeworks/hw4_ETL.sql diff --git a/docker_compose/docker-compose.yml b/docker_compose/docker-compose.yml index 7e02491..a92edfc 100644 --- a/docker_compose/docker-compose.yml +++ b/docker_compose/docker-compose.yml @@ -12,6 +12,7 @@ services: - postgres_host volumes: - "${SOURCE_DATA}/pg_data:/var/lib/postgresql/data" + - "${SOURCE_DATA}:/usr/share/data_store" environment: POSTGRES_HOST_AUTH_METHOD: "trust" redis_host: diff --git a/homeworks/hw4_ETL.sql b/homeworks/hw4_ETL.sql new file mode 100644 index 0000000..51ae6bd --- /dev/null +++ b/homeworks/hw4_ETL.sql @@ -0,0 +1,55 @@ +-- Запрос на удаление создаваемых таблиц, если они уже есть +DROP TABLE IF EXISTS movie.content_genres; +DROP TABLE IF EXISTS movie.top_rated_tags; + +-- Запрос на создание таблицы 'content_genres' +CREATE TABLE movie.content_genres +( + movieid BIGINT, + genre VARCHAR(128) +); + +-- Команда на загрузку данных в таблицу 'content_genres' +\COPY movie.content_genres FROM '/usr/share/data_store/raw_data/genres.csv' DELIMITER ',' CSV HEADER; + +-- Запрос на вывод данных тыблицы 'content_genres' +select * from movie.content_genres limit 100; + +-- Запрос 1 +SELECT movieid, avg_rating + FROM ( + SELECT movieid, AVG(rating) as avg_rating, COUNT(userid) as count_users + FROM movie.ratings + GROUP BY movieid + ) as sample + WHERE count_users > 50 + ORDER BY avg_rating DESC, movieid + LIMIT 150; + +-- Запрос на получение временной таблицы +WITH top_rated as ( + SELECT movieid, avg_rating + FROM ( + SELECT movieid, AVG(rating) as avg_rating, COUNT(userid) as count_users + FROM movie.ratings + GROUP BY movieid + ) as sample + WHERE count_users > 50 + ORDER BY avg_rating DESC, movieid + LIMIT 150 +) + +-- Запрос на заполнение таблицы 'top_rated_tags' +SELECT tr.movieid, tr.avg_rating, cg.genre + INTO movie.top_rated_tags + FROM top_rated AS tr + LEFT JOIN movie.content_genres AS cg ON cg.movieid = tr.movieid + ORDER BY tr.avg_rating DESC; + +-- Зарос на вывод данных 'top_rated_tags' +SELECT * FROM movie.top_rated_tags ORDER BY avg_rating DESC; + +-- анды выгрузки данных в csv + +\COPY (SELECT * FROM movie.top_rated_tags) TO '/usr/share/data_store/raw_data/top_rated_tags.csv' WITH CSV HEADER DELIMITER AS E'\t'; + From 99db8c5e1e0e1c255dc2dfb04659b30579ec9881 Mon Sep 17 00:00:00 2001 From: Aynur19 Date: Mon, 7 Dec 2020 12:05:52 +0300 Subject: [PATCH 5/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81:=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B8=20=D1=83=D1=81=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8?= =?UTF-8?q?=20=D1=82=D0=BE=D0=B3=D0=BE,=20=D1=87=D1=82=D0=BE=20=D1=83=20?= =?UTF-8?q?=D1=84=D0=B8=D0=BB=D1=8C=D0=BC=D0=B0=20=D1=83=D0=BA=D0=B0=D0=B7?= =?UTF-8?q?=D0=B0=D0=BD=20=D0=B6=D0=B0=D0=BD=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- homeworks/hw4_ETL.sql | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/homeworks/hw4_ETL.sql b/homeworks/hw4_ETL.sql index 51ae6bd..32a831b 100644 --- a/homeworks/hw4_ETL.sql +++ b/homeworks/hw4_ETL.sql @@ -13,26 +13,30 @@ CREATE TABLE movie.content_genres \COPY movie.content_genres FROM '/usr/share/data_store/raw_data/genres.csv' DELIMITER ',' CSV HEADER; -- Запрос на вывод данных тыблицы 'content_genres' -select * from movie.content_genres limit 100; +SELECT * FROM movie.content_genres LIMIT 100; -- Запрос 1 SELECT movieid, avg_rating FROM ( - SELECT movieid, AVG(rating) as avg_rating, COUNT(userid) as count_users - FROM movie.ratings - GROUP BY movieid - ) as sample + SELECT r.movieid, AVG(r.rating) AS avg_rating, COUNT(userid) as count_users + FROM movie.ratings AS r + LEFT JOIN movie.content_genres AS cg ON cg.movieid = r.movieid + WHERE cg.genre IS NOT NULL + GROUP BY r.movieid + ) AS sample WHERE count_users > 50 ORDER BY avg_rating DESC, movieid LIMIT 150; -- Запрос на получение временной таблицы -WITH top_rated as ( +WITH top_rated AS ( SELECT movieid, avg_rating FROM ( - SELECT movieid, AVG(rating) as avg_rating, COUNT(userid) as count_users - FROM movie.ratings - GROUP BY movieid + SELECT r.movieid, AVG(r.rating) AS avg_rating, COUNT(userid) as count_users + FROM movie.ratings AS r + LEFT JOIN movie.content_genres AS cg ON cg.movieid = r.movieid + WHERE cg.genre IS NOT NULL + GROUP BY r.movieid ) as sample WHERE count_users > 50 ORDER BY avg_rating DESC, movieid From 83c5cddd1eb84d6da630fe9edebc9fc48f4e4294 Mon Sep 17 00:00:00 2001 From: Aynur19 Date: Mon, 7 Dec 2020 14:26:21 +0300 Subject: [PATCH 6/6] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D1=8B=20=D0=BF=D0=BE=20?= =?UTF-8?q?5-=D0=BE=D0=B9=20=D0=B4=D0=BE=D0=BC=D0=B0=D1=88=D0=BD=D0=B5?= =?UTF-8?q?=D0=B9=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- homeworks/hw5_agg.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 homeworks/hw5_agg.js diff --git a/homeworks/hw5_agg.js b/homeworks/hw5_agg.js new file mode 100644 index 0000000..74d345b --- /dev/null +++ b/homeworks/hw5_agg.js @@ -0,0 +1,28 @@ +db.stats() + +use movie + +db.stats() + +// Запрос 1 +db["tags"].count() +db["tags"].aggregate([{ $count: "tsags_count" }]) + +// Запрос 2 +db["tags"].count({ "tag_name": "Adventure" }) +db["tags"].aggregate([{ $match: { "tag_name": "Adventure" } }, { $count: "adventure_count" }]) + +// Запрос 3 +db["tags"].aggregate([{ $group: {_id: "$tag_name", count: { $sum: 1 } } }, { $sort: { count:-1 } }, { $limit: 3 }]) + + +// Запрос 1 +db.tags.count() +db.tags.aggregate([{ $count: "tsags_count" }]) + +// Запрос 2 +db.tags.count({ "tag_name": "Adventure" }) +db.tags.aggregate([{ $match: { "tag_name": "Adventure" } }, { $count: "adventure_count" }]) + +// Запрос 3 +db.tags.aggregate([{ $group: {_id: "$tag_name", count: { $sum: 1 } } }, { $sort: { count:-1 } }, { $limit: 3 }])