diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..7bc07ec --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Environment-dependent path to Maven home directory +/mavenHomeManager.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..8f5ea45 --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,17 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306 + + + + + + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/.idea/lab-java-normalization-ddl-aggregation.iml b/.idea/lab-java-normalization-ddl-aggregation.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/lab-java-normalization-ddl-aggregation.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..f03c948 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..152076a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LabWeek6.sql b/LabWeek6.sql new file mode 100644 index 0000000..38653a4 --- /dev/null +++ b/LabWeek6.sql @@ -0,0 +1,120 @@ +CREATE DATABASE lab_week_6_final; + +USE lab_week_6_final; + +CREATE TABLE authors ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100) NOT NULL UNIQUE +); + +CREATE TABLE articles ( + id INT AUTO_INCREMENT PRIMARY KEY, + title VARCHAR(255) NOT NULL, + word_count INT NOT NULL CHECK ( word_count > 0 ), + views INT NOT NULL CHECK ( views >= 0 ), + author_id INT, + FOREIGN KEY (author_id) REFERENCES authors(id) +); + +INSERT INTO authors (name) VALUES + ('Maria Charlotte'), + ('Juan Perez'), + ('Gemma Alcocer'); + +INSERT INTO articles (title, word_count, views, author_id) VALUES + ('Best Paint Colors',814,14,1), + ('Small Space Decorating Tips',1146,221,2), + ('Hot Acessories',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); + +CREATE TABLE customers ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100) NOT NULL, + status VARCHAR(20) NOT NULL, + total_mileage INT NOT NULL CHECK ( total_mileage >=0 ) +); + +CREATE TABLE aircrafts ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100) NOT NULL UNIQUE, + total_seats INT NOT NULL CHECK ( total_seats >0 ) +); + +CREATE TABLE flights ( + flight_number VARCHAR(10) PRIMARY KEY, + aircraft_id INT, + mileage INT NOT NULL CHECK ( mileage >0 ), + FOREIGN KEY (aircraft_id) REFERENCES aircrafts (id) +); + +CREATE TABLE bookings ( + id INT AUTO_INCREMENT PRIMARY KEY, + customer_id INT, + flight_number VARCHAR(10), + FOREIGN KEY (customer_id) REFERENCES customers(id), + FOREIGN KEY (flight_number) REFERENCES flights(flight_number) +); + +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'), + (3,'DL122'), + (3,'DL53'), + (3,'DL222'), + (4,'DL143'), + (4,'DL37'), + (5,'DL143'), + (5,'DL122'), + (6,'DL222'), + (7,'DL222'), + (8,'DL222'); + +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