Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/api-sql-intro.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions sql/films/create-directors.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
CREATE TABLE directors(
id serial primary key,
name varchar(255) NOT NULL,
)
9 changes: 9 additions & 0 deletions sql/films/create-films.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
CREATE TABLE films(
id SERIAL PRIMARY KEY,
title VARCHAR(255) UNIQUE NOT NULL,
genre VARCHAR(50) NOT NULL,
release_year INT NOT NULL,
score INT NOT NULL,
directorId INT,
CONSTRAINT fk_director FOREIGN KEY (directorId) REFERENCES directors(id) ON DELETE SET NULL
);
15 changes: 15 additions & 0 deletions sql/films/insert-films.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
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);
27 changes: 27 additions & 0 deletions sql/films/select-films-core.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
SELECT * FROM films;

SELECT title, score FROM films ORDER BY score DESC;

SELECT title, release_year FROM films ORDER BY release_year ASC;

SELECT title, score FROM films WHERE score >= 8;

SELECT title, score FROM films WHERE score <= 7;

SELECT title, release_year FROM films WHERE release_year = 1990;

SELECT title, release_year FROM films WHERE release_year <= 1999 ORDER BY release_year ASC;

SELECT title, release_year FROM films WHERE release_year > 1999 ORDER BY release_year ASC;

SELECT title, release_year FROM films WHERE release_year < 1999 AND release_year > 1990 ORDER BY release_year ASC;

SELECT title, genre, release_year FROM films WHERE genre = 'SciFi' ORDER BY release_year DESC;

SELECT title, genre, release_year FROM films WHERE genre = 'SciFi' OR genre = 'Western' ORDER BY release_year DESC;

SELECT title, genre, release_year FROM films WHERE NOT genre = 'SciFi' ORDER BY release_year DESC;

SELECT title, genre, release_year FROM films WHERE genre = 'Western' AND release_year < 2000 ORDER BY release_year DESC;

SELECT title, release_year FROM films WHERE title LIKE '%Matrix%' ORDER BY release_year DESC;
21 changes: 21 additions & 0 deletions sql/films/select-films-ext.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
SELECT ROUND(AVG(score), 1) AS average_rating FROM films;

SELECT COUNT(title) FROM films AS total_films;

SELECT genre, ROUND(AVG(score), 1) AS average_rating FROM films GROUP BY genre ORDER BY ROUND(AVG(score), 1) DESC;



SELECT films.title, directors.name AS director
FROM films
JOIN directors
ON films.directorid = directors.id;



SELECT directors.name, COUNT(films.directorId) AS movies
FROM films
JOIN directors
ON films.directorId = directors.id
GROUP BY directors.id;