From 67dd87316281daa83b438e14cee91f778556071d Mon Sep 17 00:00:00 2001 From: Ulvi Haciyev Date: Mon, 23 Mar 2026 12:46:52 +0400 Subject: [PATCH] lab has done --- SQL2/ER_diagram.mwb | Bin 0 -> 8716 bytes SQL2/Solution.sql | 165 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+) create mode 100644 SQL2/ER_diagram.mwb create mode 100644 SQL2/Solution.sql diff --git a/SQL2/ER_diagram.mwb b/SQL2/ER_diagram.mwb new file mode 100644 index 0000000000000000000000000000000000000000..8834b2fcef68d435a2296f8a734413f46992dbac GIT binary patch literal 8716 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 Ctg`C> literal 0 HcmV?d00001 diff --git a/SQL2/Solution.sql b/SQL2/Solution.sql new file mode 100644 index 0000000..6851a5e --- /dev/null +++ b/SQL2/Solution.sql @@ -0,0 +1,165 @@ +-- EXERCISE 1: +CREATE DATABASE blog; + +USE blog; + +CREATE TABLE authors +( + id INT auto_increment PRIMARY KEY, + name VARCHAR(50) NOT NULL +); + +CREATE TABLE blogs +( + id INT auto_increment PRIMARY KEY, + title VARCHAR(100) NOT NULL UNIQUE, + word_count INT NOT NULL, + views INT NOT NULL DEFAULT 0, + author_id INT NOT NULL, + CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors(id) ON DELETE CASCADE +); + +INSERT INTO authors (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 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); + +SELECT a.name,b.title,b.word_count,b.views +FROM blogs b +JOIN authors a ON b.author_id=a.id +ORDER BY b.views; + +-- Exercise 2: +CREATE DATABASE airline; + +USE airline; + +CREATE TABLE customers +( + id INT auto_increment PRIMARY KEY, + name VARCHAR(50) NOT NULL, + status ENUM('Gold','Silver','None') DEFAULT 'None', + total_mileage INT NOT NULL +); + +CREATE TABLE aircrafts +( + id INT auto_increment PRIMARY KEY, + name VARCHAR(30) NOT NULL, + total_seats INT NOT NULL +); + +CREATE TABLE flights +( + flight_number VARCHAR(20) PRIMARY KEY, + mileage INT NOT NULL, + aircraft_id INT NOT NULL, + FOREIGN KEY (aircraft_id) REFERENCES aircrafts(id) +); + +CREATE TABLE bookings +( + id INT auto_increment PRIMARY KEY, + customer_id INT NOT NULL, + FOREIGN KEY (customer_id) REFERENCES customers(id), + flight_number VARCHAR(20) NOT NULL, + FOREIGN KEY (flight_number) REFERENCES flights(flight_number), + UNIQUE(customer_id,flight_number) +); + +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 aircrafts (name,total_seats) +VALUES + ('Boeing 747',400), + ('Airbus A330',236), + ('Boeing 777',264); + +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'), +(3, 'DL122'), +(3, 'DL53'), +(4, 'DL143'), +(3, 'DL222'), +(5, 'DL143'), +(6, 'DL222'), +(7, 'DL222'), +(5, 'DL122'), +(4, 'DL37'), +(8, 'DL222'); + +SELECT +c.name AS 'Customer Name', +c.status AS 'Customer Status', +f.flight_number AS 'Flight Number', +a.name AS 'Aircraft', +a.total_seats AS 'Total Aircraft Seats', +f.mileage AS 'Flight Mileage', +c.total_mileage AS 'Total Customer Mileage' +FROM bookings b +JOIN customers c ON b.customer_id=c.id +JOIN flights f ON f.flight_number=b.flight_number +JOIN aircrafts a ON a.id=f.aircraft_id; + + +-- Exercise 3: +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;