From 7449542078620b4515272ca94633dd4570410313 Mon Sep 17 00:00:00 2001 From: Anar Vali Date: Tue, 24 Mar 2026 04:19:14 +0400 Subject: [PATCH] lab-normalization --- lab_exercises/Exercise_1.sql | 32 ++++++++++++++++++ lab_exercises/Exercise_2.sql | 65 ++++++++++++++++++++++++++++++++++++ lab_exercises/Exercise_3.sql | 21 ++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 lab_exercises/Exercise_1.sql create mode 100644 lab_exercises/Exercise_2.sql create mode 100644 lab_exercises/Exercise_3.sql diff --git a/lab_exercises/Exercise_1.sql b/lab_exercises/Exercise_1.sql new file mode 100644 index 0000000..eb58993 --- /dev/null +++ b/lab_exercises/Exercise_1.sql @@ -0,0 +1,32 @@ +USE ironhack ; +CREATE TABLE IF NOT EXISTS author( +id INT AUTO_INCREMENT PRIMARY KEY, +name VARCHAR(100) NOT NULL UNIQUE +); + + +CREATE TABLE IF NOT + EXISTS posts( +id INT AUTO_INCREMENT PRIMARY KEY, +author_id INT NOT NULL, +title VARCHAR(100) NOT NULL, +word_count INT NOT NULL, +views INT NOT NULL, +FOREIGN KEY (author_id) REFERENCES author(id) +); + + +INSERT INTO author (name) VALUES +('Maria Charlotte'), +('Juan Perez'), +('Gemma Alcocer'); + +INSERT INTO posts (title , word_count , views, author_id ) VALUES +('Best Paint Colors', 814, 14, 1), +('Small Space Decorating Tips', 1146, 221, 2), +('Hot Accessories', 986, 105, 1), +('Mixing Textures', 765, 22, 1), +('Kitchen Refresh', 1242, 307, 2), +('Homemade Art Hacks', 1002, 193, 1), +('Refinishing Wood Floors', 1571, 7542, 3); + diff --git a/lab_exercises/Exercise_2.sql b/lab_exercises/Exercise_2.sql new file mode 100644 index 0000000..81ac562 --- /dev/null +++ b/lab_exercises/Exercise_2.sql @@ -0,0 +1,65 @@ +-- 1. WIPE THE OLD TABLES (Must be in this order due to foreign keys) +DROP TABLE IF EXISTS bookings; +DROP TABLE IF EXISTS flights; +DROP TABLE IF EXISTS aircrafts; +DROP TABLE IF EXISTS customers; + +-- 2. CREATE ADJUSTED TABLES +CREATE TABLE customers( +id INT AUTO_INCREMENT PRIMARY KEY, +name VARCHAR(1000) NOT NULL, +status VARCHAR(100) NOT NULL, +total_mileage INT NOT NULL +); + +CREATE TABLE aircrafts( +id INT AUTO_INCREMENT PRIMARY KEY, +name VARCHAR(100) NOT NULL, +total_seats INT NOT NULL +); + +CREATE TABLE flights( +id INT AUTO_INCREMENT PRIMARY KEY, +flight_number VARCHAR(100) NOT NULL, +mileage INT NOT NULL, +aircraft_id INT NOT NULL, +FOREIGN KEY (aircraft_id) REFERENCES aircrafts(id) +); + +CREATE TABLE bookings ( +booking_id INT AUTO_INCREMENT PRIMARY KEY, +customer_id INT NOT NULL, +flight_number VARCHAR(100) NOT NULL, +FOREIGN KEY (customer_id) REFERENCES customers(id) +); + + + +-- 3. INSERT ADJUSTE DATA +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 , mileage, aircraft_id) VALUES +('DL143', 135, 1), +('DL122', 4370, 2), +('DL53', 2078, 3), +('DL222', 1765, 3), +('DL37', 531, 1); + +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'); \ No newline at end of file diff --git a/lab_exercises/Exercise_3.sql b/lab_exercises/Exercise_3.sql new file mode 100644 index 0000000..f2c0f7d --- /dev/null +++ b/lab_exercises/Exercise_3.sql @@ -0,0 +1,21 @@ +SELECT COUNT(DISTINCT flight_number) FROM flights; +SELECT AVG(mileage) FROM flights; +SELECT AVG(total_seats) FROM aircrafts; +SELECT status, AVG(total_mileage) FROM customers GROUP BY status; +SELECT status, MAX(total_mileage) FROM customers GROUP BY status; +SELECT COUNT(*) FROM aircrafts WHERE name LIKE '%Boeing%'; +SELECT * FROM flights WHERE mileage BETWEEN 300 AND 2000; +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; +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; \ No newline at end of file