From 71f0a7291effc74900c64ea2f47bc9a5d948ea39 Mon Sep 17 00:00:00 2001 From: Nihad Bagirzade Date: Tue, 31 Mar 2026 23:04:43 +0400 Subject: [PATCH 1/2] Exercise 1 done --- solutions.sql | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 solutions.sql diff --git a/solutions.sql b/solutions.sql new file mode 100644 index 0000000..80dc016 --- /dev/null +++ b/solutions.sql @@ -0,0 +1,44 @@ +CREATE DATABASE IF NOT EXISTS airport; +USE airport; + +-- EXERCISE 1 -- +#First we should add a PRIMARY KEY and then split the tables. + +CREATE TABLE authors ( + id INT AUTO_INCREMENT PRIMARY KEY, + full_name VARCHAR(100) NOT NULL +); + +CREATE TABLE blogs ( + id INT AUTO_INCREMENT PRIMARY KEY, + title VARCHAR(100) NOT NULL, + word_count INT NOT NULL, + views BIGINT NOT NULL, + author_id INT NOT NULL, + CONSTRAINT fk_author_blog FOREIGN KEY (author_id) REFERENCES authors(id) +); + +INSERT INTO authors (full_name) +VALUES + ('Maria Charlotte'), + ('Juan Perez'), + ('Gemma Alcocer'); + + +INSERT INTO blogs (title, word_count, views, author_id) +VALUES + ('Best Paint Colors', 814, 14, 1), + ('Small Space Decoration Tips', 1146, 221, 2), + ('Hot Accessories', 986, 105, 1), + ('Mixing Textures', 765, 22, 1), + ('Kitchen Refresh', 1242, 307, 2), + ('Homemade Wood Floors', 1002, 193, 1), + ('Refinishing Wood Floors', 1571, 7542, 3); + + + + + + + + From 1b34622d0e9a7f109e845d31f6f3ed337573b887 Mon Sep 17 00:00:00 2001 From: Nihad Bagirzade Date: Wed, 1 Apr 2026 00:05:50 +0400 Subject: [PATCH 2/2] Exercise 2 done --- solutions.sql | 129 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 125 insertions(+), 4 deletions(-) diff --git a/solutions.sql b/solutions.sql index 80dc016..c99a808 100644 --- a/solutions.sql +++ b/solutions.sql @@ -4,12 +4,12 @@ USE airport; -- EXERCISE 1 -- #First we should add a PRIMARY KEY and then split the tables. -CREATE TABLE authors ( +CREATE TABLE IF NOT EXISTS authors ( id INT AUTO_INCREMENT PRIMARY KEY, full_name VARCHAR(100) NOT NULL ); -CREATE TABLE blogs ( +CREATE TABLE IF NOT EXISTS blogs ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100) NOT NULL, word_count INT NOT NULL, @@ -28,15 +28,136 @@ VALUES INSERT INTO blogs (title, word_count, views, author_id) VALUES ('Best Paint Colors', 814, 14, 1), - ('Small Space Decoration Tips', 1146, 221, 2), + ('Small Space Decorating Tips', 1146, 221, 2), ('Hot Accessories', 986, 105, 1), ('Mixing Textures', 765, 22, 1), ('Kitchen Refresh', 1242, 307, 2), - ('Homemade Wood Floors', 1002, 193, 1), + ('Homemade Wood Hacks', 1002, 193, 1), ('Refinishing Wood Floors', 1571, 7542, 3); +-- EXERCISE 2 -- +#Again we should add Primary Keys and separate tables. +CREATE TABLE IF NOT EXISTS aircrafts ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100) NOT NULL, + total_seats INT NOT NULL +); + +CREATE TABLE IF NOT EXISTS customers ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(200) NOT NULL, + status ENUM('GOLD', 'SILVER', 'NONE') DEFAULT 'NONE', + total_mileage BIGINT NOT NULL +); + +CREATE TABLE IF NOT EXISTS flights ( + flight_number VARCHAR(20) NOT NULL PRIMARY KEY, + aircraft_id INT NOT NULL, + mileage INT NOT NULL, + CONSTRAINT fk_flight_aircraft FOREIGN KEY (aircraft_id) REFERENCES aircrafts(id) +); + +CREATE TABLE IF NOT EXISTS bookings ( + id INT AUTO_INCREMENT PRIMARY KEY, + customer_id INT NOT NULL, + flight_number VARCHAR(20) NOT NULL, + CONSTRAINT fk_booking_flight FOREIGN KEY (flight_number) REFERENCES flights(flight_number), + CONSTRAINT fk_booking_customer FOREIGN KEY (customer_id) REFERENCES customers(id) +); + + +INSERT INTO aircrafts (name, total_seats) +VALUES + ('Boeing 747', 400), + ('Airbus A330', 236), + ('Boeing 777', 264); + +INSERT INTO customers (name, status, total_mileage) +VALUES + ('Agustine Riviera', 'SILVER', 115235), + ('Alaina Sepulvida', 'NONE', 6008), + ('Tom Jones', 'GOLD', 205767), + ('Sam Rio', 'NONE', 2653), + ('Jessica James', 'SILVER', 127656), + ('Ana Janco', 'SILVER', 136773), + ('Jennifer Cortez', 'GOLD', 300582), + ('Christian Janco', 'SILVER', 14642); + +INSERT INTO flights (flight_number, aircraft_id, mileage) +VALUES + ('DL143', 1, 135), + ('DL122', 2, 4370), + ('DL53', 3, 2078), + ('DL222', 3, 1765), + ('DL37', 1, 531); + +INSERT INTO bookings (customer_id, flight_number) +VALUES + (1, 'DL143'), + (1, 'DL122'), + (2, 'DL122'), + (1, 'DL143'), + (3, 'DL122'), + (3, 'DL53'), + (1, 'DL143'), + (4, 'DL143'), + (1, 'DL143'), + (3, 'DL222'), + (5, 'DL143'), + (4, 'DL143'), + (6, 'DL222'), + (7, 'DL222'), + (5, 'DL122'), + (4, 'DL37'), + (8, 'DL222'); + +-- EXERCISE 3 -- + +-- 1 -- +SELECT COUNT(*) AS flight_count FROM flights; + +-- 2 -- +SELECT AVG(mileage) AS average_mileage FROM flights; + +-- 3 -- +SELECT AVG(total_seats) AS average_seats FROM aircrafts; + +-- 4 -- +SELECT status, AVG(total_mileage) AS average_mileage FROM customers +GROUP BY status; + +-- 5 -- +SELECT status, MAX(total_mileage) AS max_mileage FROM customers +GROUP BY status; + +-- 6 -- +SELECT COUNT(*) AS count FROM aircrafts +WHERE name LIKE '%Boeing%'; + +-- 7 -- +SELECT * FROM flights +WHERE mileage BETWEEN 300 AND 2000; + +-- 8 -- +SELECT c.status, AVG(f.mileage) +FROM bookings b +JOIN customers c ON b.customer_id = c.id +JOIN flights f ON b.flight_number = f.flight_number +GROUP BY c.status; + +-- 9 -- +SELECT a.name, COUNT(*) AS total_bookings +FROM bookings b +JOIN customers c ON b.customer_id = c.id +JOIN flights f ON b.flight_number = f.flight_number +JOIN aircrafts a ON f.aircraft_id = a.id +WHERE c.status = 'Gold' +GROUP BY a.name +ORDER BY total_bookings DESC +LIMIT 1; +