From c1063a080eb885f9ce7de041da4f4b714a89e117 Mon Sep 17 00:00:00 2001 From: Lowe Raivio Date: Tue, 21 Jan 2025 16:07:26 +0100 Subject: [PATCH] Core + extension 1 + extension 2 + extension 3 --- queries/core/film_insertion/insert_films.sql | 17 +++++++++++++++ queries/core/film_selection/All_films.sql | 1 + ...All_films_ordered_by_rating_descending.sql | 1 + .../All_films_with_a_rating_of_7_or_lower.sql | 1 + ...All_films_with_a_rating_of_8_or_higher.sql | 1 + .../films_released_after_1990.sql | 1 + .../films_released_before_2000.sql | 1 + .../films_released_between_1990_and_1999.sql | 1 + .../film_selection/films_released_in_1990.sql | 1 + ...have_the_world__Matrix__in_their_title.sql | 1 + ...ilms_with_any_genre_apart_from__SciFi_.sql | 1 + .../films_with_the_genre_of__SciFi_.sql | 1 + ...with_the_genre_of__Western__or__Scifi_.sql | 1 + ...enre_of__Western__released_before_2000.sql | 1 + .../film_table_creation/create_film_table.sql | 13 ++++++++++++ .../extension_1/ext1_average_film_rating.sql | 2 ++ .../ext1_average_film_rating_per_genre.sql | 1 + queries/extension_1/ext1_total_nr_films.sql | 1 + .../create_director_and_newFilms_table.sql | 21 +++++++++++++++++++ queries/extension_2/director_insertion.sql | 9 ++++++++ .../extension_2/join_directors_newFilms.sql | 4 ++++ queries/extension_2/newFilms_insertion.sql | 17 +++++++++++++++ .../select_directors_nrOfFilms.sql | 4 ++++ 23 files changed, 102 insertions(+) create mode 100644 queries/core/film_insertion/insert_films.sql create mode 100644 queries/core/film_selection/All_films.sql create mode 100644 queries/core/film_selection/All_films_ordered_by_rating_descending.sql create mode 100644 queries/core/film_selection/All_films_with_a_rating_of_7_or_lower.sql create mode 100644 queries/core/film_selection/All_films_with_a_rating_of_8_or_higher.sql create mode 100644 queries/core/film_selection/films_released_after_1990.sql create mode 100644 queries/core/film_selection/films_released_before_2000.sql create mode 100644 queries/core/film_selection/films_released_between_1990_and_1999.sql create mode 100644 queries/core/film_selection/films_released_in_1990.sql create mode 100644 queries/core/film_selection/films_that_have_the_world__Matrix__in_their_title.sql create mode 100644 queries/core/film_selection/films_with_any_genre_apart_from__SciFi_.sql create mode 100644 queries/core/film_selection/films_with_the_genre_of__SciFi_.sql create mode 100644 queries/core/film_selection/films_with_the_genre_of__Western__or__Scifi_.sql create mode 100644 queries/core/film_selection/films_with_the_genre_of__Western__released_before_2000.sql create mode 100644 queries/core/film_table_creation/create_film_table.sql create mode 100644 queries/extension_1/ext1_average_film_rating.sql create mode 100644 queries/extension_1/ext1_average_film_rating_per_genre.sql create mode 100644 queries/extension_1/ext1_total_nr_films.sql create mode 100644 queries/extension_2/create_director_and_newFilms_table.sql create mode 100644 queries/extension_2/director_insertion.sql create mode 100644 queries/extension_2/join_directors_newFilms.sql create mode 100644 queries/extension_2/newFilms_insertion.sql create mode 100644 queries/extension_3/select_directors_nrOfFilms.sql diff --git a/queries/core/film_insertion/insert_films.sql b/queries/core/film_insertion/insert_films.sql new file mode 100644 index 0000000..5effdd4 --- /dev/null +++ b/queries/core/film_insertion/insert_films.sql @@ -0,0 +1,17 @@ +INSERT INTO films +(title, genre, release_year,score) +VALUES +('The Shawshank Redemption', 'Drama', 1994, 9), +('The Godfather', 'Crime', 1972, 9), +('The Dark Knight', 'Action', 2008, 9), +('Alien', 'SciFi', 1979, 9), +('Total Recall', 'SciFi', 1990, 8), +('The Matrix', 'SciFi', 1999, 8), +('The Matrix Resurrections', 'SciFi', 2021, 5), +('The Matrix Reloaded', 'SciFi', 2003, 6), +('The Hunt for Red October', 'Thriller', 1990, 7), +('Misery', 'Thriller', 1990, 7), +('The Power Of The Dog', 'Western', 2021, 6), +('Hell or High Water', 'Western', 2016, 8), +('The Good the Bad and the Ugly', 'Western', 1966, 9), +('Unforgiven', 'Western', 1992, 7); \ No newline at end of file diff --git a/queries/core/film_selection/All_films.sql b/queries/core/film_selection/All_films.sql new file mode 100644 index 0000000..7d64338 --- /dev/null +++ b/queries/core/film_selection/All_films.sql @@ -0,0 +1 @@ +SELECT * from films \ No newline at end of file diff --git a/queries/core/film_selection/All_films_ordered_by_rating_descending.sql b/queries/core/film_selection/All_films_ordered_by_rating_descending.sql new file mode 100644 index 0000000..a0e59aa --- /dev/null +++ b/queries/core/film_selection/All_films_ordered_by_rating_descending.sql @@ -0,0 +1 @@ +SELECT * FROM films f ORDER BY f.score DESC \ No newline at end of file diff --git a/queries/core/film_selection/All_films_with_a_rating_of_7_or_lower.sql b/queries/core/film_selection/All_films_with_a_rating_of_7_or_lower.sql new file mode 100644 index 0000000..b40dfe9 --- /dev/null +++ b/queries/core/film_selection/All_films_with_a_rating_of_7_or_lower.sql @@ -0,0 +1 @@ +SELECT * FROM films f WHERE f.score <= 7 \ No newline at end of file diff --git a/queries/core/film_selection/All_films_with_a_rating_of_8_or_higher.sql b/queries/core/film_selection/All_films_with_a_rating_of_8_or_higher.sql new file mode 100644 index 0000000..57b7342 --- /dev/null +++ b/queries/core/film_selection/All_films_with_a_rating_of_8_or_higher.sql @@ -0,0 +1 @@ +SELECT * FROM films f WHERE f.score >= 8 \ No newline at end of file diff --git a/queries/core/film_selection/films_released_after_1990.sql b/queries/core/film_selection/films_released_after_1990.sql new file mode 100644 index 0000000..9d94297 --- /dev/null +++ b/queries/core/film_selection/films_released_after_1990.sql @@ -0,0 +1 @@ +SELECT * from films f WHERE f.release_year > 1990 \ No newline at end of file diff --git a/queries/core/film_selection/films_released_before_2000.sql b/queries/core/film_selection/films_released_before_2000.sql new file mode 100644 index 0000000..47ea8be --- /dev/null +++ b/queries/core/film_selection/films_released_before_2000.sql @@ -0,0 +1 @@ +SELECT * FROM films f WHERE f.release_year < 2000 \ No newline at end of file diff --git a/queries/core/film_selection/films_released_between_1990_and_1999.sql b/queries/core/film_selection/films_released_between_1990_and_1999.sql new file mode 100644 index 0000000..4983556 --- /dev/null +++ b/queries/core/film_selection/films_released_between_1990_and_1999.sql @@ -0,0 +1 @@ +SELECT * FROM films f WHERE f.release_year > 1990 and f.release_year < 1999 \ No newline at end of file diff --git a/queries/core/film_selection/films_released_in_1990.sql b/queries/core/film_selection/films_released_in_1990.sql new file mode 100644 index 0000000..0de2bda --- /dev/null +++ b/queries/core/film_selection/films_released_in_1990.sql @@ -0,0 +1 @@ +SELECT * FROM films f WHERE f.release_year = 1990 \ No newline at end of file diff --git a/queries/core/film_selection/films_that_have_the_world__Matrix__in_their_title.sql b/queries/core/film_selection/films_that_have_the_world__Matrix__in_their_title.sql new file mode 100644 index 0000000..5afdf86 --- /dev/null +++ b/queries/core/film_selection/films_that_have_the_world__Matrix__in_their_title.sql @@ -0,0 +1 @@ +SELECT * FROM films f WHERE f.title LIKE '%Matrix%'; \ No newline at end of file diff --git a/queries/core/film_selection/films_with_any_genre_apart_from__SciFi_.sql b/queries/core/film_selection/films_with_any_genre_apart_from__SciFi_.sql new file mode 100644 index 0000000..26d457e --- /dev/null +++ b/queries/core/film_selection/films_with_any_genre_apart_from__SciFi_.sql @@ -0,0 +1 @@ +SELECT * FROM films f WHERE f.genre != 'SciFi'; \ No newline at end of file diff --git a/queries/core/film_selection/films_with_the_genre_of__SciFi_.sql b/queries/core/film_selection/films_with_the_genre_of__SciFi_.sql new file mode 100644 index 0000000..f7f1057 --- /dev/null +++ b/queries/core/film_selection/films_with_the_genre_of__SciFi_.sql @@ -0,0 +1 @@ +SELECT * FROM films f WHERE f.genre = 'SciFi'; \ No newline at end of file diff --git a/queries/core/film_selection/films_with_the_genre_of__Western__or__Scifi_.sql b/queries/core/film_selection/films_with_the_genre_of__Western__or__Scifi_.sql new file mode 100644 index 0000000..06789e7 --- /dev/null +++ b/queries/core/film_selection/films_with_the_genre_of__Western__or__Scifi_.sql @@ -0,0 +1 @@ +SELECT * FROM films f WHERE f.genre IN ('SciFi', 'Western'); \ No newline at end of file diff --git a/queries/core/film_selection/films_with_the_genre_of__Western__released_before_2000.sql b/queries/core/film_selection/films_with_the_genre_of__Western__released_before_2000.sql new file mode 100644 index 0000000..faf23b4 --- /dev/null +++ b/queries/core/film_selection/films_with_the_genre_of__Western__released_before_2000.sql @@ -0,0 +1 @@ +SELECT * FROM films f WHERE f.genre = 'Western' and f.release_year < 2000 \ No newline at end of file diff --git a/queries/core/film_table_creation/create_film_table.sql b/queries/core/film_table_creation/create_film_table.sql new file mode 100644 index 0000000..a4e3024 --- /dev/null +++ b/queries/core/film_table_creation/create_film_table.sql @@ -0,0 +1,13 @@ +CREATE TABLE films ( + id serial PRIMARY KEY, + title VARCHAR(255) NOT NULL, + genre VARCHAR(40) NOT NULL, + release_year INT NOT NULL, + score INT NOT NULL CHECK ( + score >= 0 + AND score <= 10 + ), + UNIQUE (id), + UNIQUE (title) +) + diff --git a/queries/extension_1/ext1_average_film_rating.sql b/queries/extension_1/ext1_average_film_rating.sql new file mode 100644 index 0000000..0aba2b8 --- /dev/null +++ b/queries/extension_1/ext1_average_film_rating.sql @@ -0,0 +1,2 @@ + +SELECT AVG(f.score) FROM films f \ No newline at end of file diff --git a/queries/extension_1/ext1_average_film_rating_per_genre.sql b/queries/extension_1/ext1_average_film_rating_per_genre.sql new file mode 100644 index 0000000..a4cff5c --- /dev/null +++ b/queries/extension_1/ext1_average_film_rating_per_genre.sql @@ -0,0 +1 @@ +SELECT f.genre, AVG(f.score) FROM films f GROUP BY f.genre \ No newline at end of file diff --git a/queries/extension_1/ext1_total_nr_films.sql b/queries/extension_1/ext1_total_nr_films.sql new file mode 100644 index 0000000..9723c07 --- /dev/null +++ b/queries/extension_1/ext1_total_nr_films.sql @@ -0,0 +1 @@ +SELECT COUNT(*) FROM films \ No newline at end of file diff --git a/queries/extension_2/create_director_and_newFilms_table.sql b/queries/extension_2/create_director_and_newFilms_table.sql new file mode 100644 index 0000000..a054563 --- /dev/null +++ b/queries/extension_2/create_director_and_newFilms_table.sql @@ -0,0 +1,21 @@ +CREATE TABLE directors( + directorId serial PRIMARY KEY, + name VARCHAR(50), + unique(directorId) +); + +CREATE TABLE newfilms ( + id serial PRIMARY KEY, + title VARCHAR(255) NOT NULL, + genre VARCHAR(40) NOT NULL, + release_year INT NOT NULL, + score INT NOT NULL CHECK ( + score >= 0 + AND score <= 10 + ), + directorID int, + CONSTRAINT fk_director FOREIGN KEY (directorID) REFERENCES directors(directorId), + UNIQUE (id), + UNIQUE (title) +); + diff --git a/queries/extension_2/director_insertion.sql b/queries/extension_2/director_insertion.sql new file mode 100644 index 0000000..37c2e02 --- /dev/null +++ b/queries/extension_2/director_insertion.sql @@ -0,0 +1,9 @@ +INSERT INTO directors +(name) +VALUES +('Bobby'), +('Bobson'), +('Bobuel'), +('Bobster'), +('Bobifer'), +('Tord'); \ No newline at end of file diff --git a/queries/extension_2/join_directors_newFilms.sql b/queries/extension_2/join_directors_newFilms.sql new file mode 100644 index 0000000..64597be --- /dev/null +++ b/queries/extension_2/join_directors_newFilms.sql @@ -0,0 +1,4 @@ + + + +SELECT f.*, d.name FROM newfilms f INNER JOIN directors d ON f.directorid = d.directorid \ No newline at end of file diff --git a/queries/extension_2/newFilms_insertion.sql b/queries/extension_2/newFilms_insertion.sql new file mode 100644 index 0000000..933ee4d --- /dev/null +++ b/queries/extension_2/newFilms_insertion.sql @@ -0,0 +1,17 @@ +INSERT INTO newfilms +(title, genre, release_year,score, directorid) +VALUES +('The Shawshank Redemption', 'Drama', 1994, 9, 1), +('The Godfather', 'Crime', 1972, 9, 2), +('The Dark Knight', 'Action', 2008, 9, 3), +('Alien', 'SciFi', 1979, 9, 2), +('Total Recall', 'SciFi', 1990, 8, 4), +('The Matrix', 'SciFi', 1999, 8, 5), +('The Matrix Resurrections', 'SciFi', 2021, 5, 6), +('The Matrix Reloaded', 'SciFi', 2003, 6, 6), +('The Hunt for Red October', 'Thriller', 1990, 7, 4), +('Misery', 'Thriller', 1990, 7, 2), +('The Power Of The Dog', 'Western', 2021, 6, 1), +('Hell or High Water', 'Western', 2016, 8, 1), +('The Good the Bad and the Ugly', 'Western', 1966, 9, 3), +('Unforgiven', 'Western', 1992, 7, 3); \ No newline at end of file diff --git a/queries/extension_3/select_directors_nrOfFilms.sql b/queries/extension_3/select_directors_nrOfFilms.sql new file mode 100644 index 0000000..b3154dd --- /dev/null +++ b/queries/extension_3/select_directors_nrOfFilms.sql @@ -0,0 +1,4 @@ + + + +SELECT d.name, COUNT(f.*) FROM directors d INNER JOIN newfilms f ON f.directorid = d.directorid GROUP BY f.directorid, d.name \ No newline at end of file