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
140 changes: 0 additions & 140 deletions README.md

This file was deleted.

Binary file added erd.mwb
Binary file not shown.
180 changes: 180 additions & 0 deletions lab2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
use lab_2;



-- Exercise 1: Normalize a Blog Database
-- in this exercise relation beween title and author is one to one.

create table titles(

title_id int auto_increment primary key,
title_name varchar(200),
word_count int,
views int
);

create table authors (

author_id int auto_increment primary key,
author_fname varchar(100),

title_id int,

FOREIGN KEY (title_id) REFERENCES titles(title_id)


);

insert into titles(title_name, word_count, views) values
('Best Paint Colors', 814, 14),
('Small Space Decorating Tips', 1146, 221),
('Hot Accessories', 986, 105),
('Mixing Textures', 765, 22),
('Kitchen Refresh', 1242, 307),
('Homemade Art Hacks', 1002, 193),
('Refinishing Wood Floors', 1571, 7542);


insert into authors (author_fname, title_id) values
('Maria Charlotte', 1),
('Juan Perez', 2),
('Maria Charlotte', 3),
('Maria Charlotte', 4),
('Juan Perez', 5),
('Maria Charlotte', 6),
('Gemma Alcocer', 7);




-- Exercise 2: Normalize an Airline Database


CREATE TABLE customers (
customer_id int NOT NULL AUTO_INCREMENT,
customer_name varchar(200) DEFAULT NULL,
customer_status varchar(200) DEFAULT 'None',
total_customer_mileage int DEFAULT NULL,
PRIMARY KEY (customer_id)
);

INSERT INTO customers (customer_name, customer_status, total_customer_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);

CREATE TABLE aircrafts (
aircraft_name varchar(45) NOT NULL,
total_aircraft_seats int DEFAULT NULL,
PRIMARY KEY (aircraft_name),
UNIQUE KEY aircraft_name_UNIQUE (aircraft_name)
);


INSERT INTO aircrafts (aircraft_name, total_aircraft_seats)
VALUES
('Boeing 747', 400),
('Airbus A330', 236),
('Boeing 777', 264);


CREATE TABLE flights (
flight_number varchar(300) NOT NULL,
aircraft varchar(45) NOT NULL,
flight_mileage int DEFAULT NULL,
PRIMARY KEY (flight_number),
KEY aircraft_idx (aircraft),
CONSTRAINT aircraft FOREIGN KEY (aircraft) REFERENCES aircrafts (aircraft_name)
);

INSERT INTO flights (flight_number, aircraft, flight_mileage)
VALUES
('DL143', 'Boeing 747', 135),
('DL122', 'Airbus A330', 4370),
('DL53', 'Boeing 777', 2078),
('DL222', 'Boeing 777', 1765),
('DL37', 'Boeing 747', 531);

CREATE TABLE bookings (
customer_id int DEFAULT NULL,
flight_number varchar(300) DEFAULT NULL,
KEY customer_id_idx (customer_id),
KEY flight_number_idx (flight_number),
CONSTRAINT customer_id FOREIGN KEY (customer_id) REFERENCES customers (customer_id),
CONSTRAINT flight_number FOREIGN KEY (flight_number) REFERENCES flights (flight_number)
);

INSERT INTO bookings (customer_id, flight_number)
VALUES
(1, 'DL143'),
(1, 'DL122'),
(2, 'DL122'),
(3, 'DL122'),
(3, 'DL53'),
(3, 'DL222');


-- Exercise 3: Write SQL Queries on the Airline Database

SELECT COUNT(DISTINCT flight_number) FROM flights; -- 5

SELECT AVG(flight_mileage) FROM flights; -- 1775.8000

SELECT AVG(total_aircraft_seats) FROM aircrafts; -- 300.0000

SELECT customer_status, AVG(total_customer_mileage) FROM customers GROUP BY customer_status;
-- Silver 98576.5000
-- None 4330.5000
-- Gold 253174.5000

SELECT customer_status, MAX(total_customer_mileage) FROM customers GROUP BY customer_status;
-- Silver 136773
-- None 6008
-- Gold 300582

SELECT COUNT(*) FROM aircrafts WHERE aircraft_name LIKE '%Boeing%'; -- 2

SELECT * FROM flights WHERE flight_mileage BETWEEN 300 AND 2000;
-- DL222 Boeing 777 1765
-- DL37 Boeing 747 531


SELECT c.status, AVG(f.flight_mileage)
FROM bookings b
JOIN customers c ON b.customer_id = c.customer_id
JOIN flights f ON b.flight_number = f.flight_number
GROUP BY c.customer_status;
-- DL222 Boeing 777 1765
-- DL37 Boeing 747 531


SELECT a.aircraft_name, COUNT(*) AS total_bookings
FROM bookings b
JOIN customers c ON b.customer_id = c.customer_id
JOIN flights f ON b.flight_number = f.flight_number
JOIN aircrafts a ON f.aircraft = a.aircraft_name
WHERE c.customer_status = 'Gold'
GROUP BY a.aircraft_name
ORDER BY total_bookings DESC
LIMIT 1;
-- Boeing 777 2