-
Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathLAB2SQL.sql
More file actions
159 lines (145 loc) · 4.71 KB
/
LAB2SQL.sql
File metadata and controls
159 lines (145 loc) · 4.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
-- Challenge 1
create database lab;
use lab
CREATE TABLE articless (
author VARCHAR(100),
title VARCHAR(255),
word_count INT,
views INT
);
INSERT INTO articless (author, title, word_count, views) VALUES
('Maria Charlotte', 'Best Paint Colors', 814, 14),
('Juan Perez', 'Small Space Decorating Tips', 1146, 221),
('Maria Charlotte', 'Hot Accessories', 986, 105),
('Maria Charlotte', 'Mixing Textures', 765, 22),
('Juan Perez', 'Kitchen Refresh', 1242, 307),
('Maria Charlotte', 'Homemade Art Hacks', 1002, 193),
('Gemma Alcocer', 'Refinishing Wood Floors', 1571, 7542);
-- Solution 1
-- i made 2 (authors and Articles) table for 3NF
CREATE TABLE authors (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
select * from articles;
drop table articles;
INSERT INTO authors (name) VALUES
('Maria Charlotte'),
('Juan Perez'),
('Gemma Alcocer');
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
author_id INT,
title VARCHAR(255),
word_count INT,
views INT,
FOREIGN KEY (author_id) REFERENCES authors(id)
);
INSERT INTO articles (author_id, title, word_count, views) VALUES
(1, 'Best Paint Colors', 814, 14),
(2, 'Small Space Decorating Tips', 1146, 221),
(1, 'Hot Accessories', 986, 105),
(1, 'Mixing Textures', 765, 22),
(2, 'Kitchen Refresh', 1242, 307),
(1, 'Homemade Art Hacks', 1002, 193),
(3, 'Refinishing Wood Floors', 1571, 7542);
-- it is for testing
SELECT
a.name AS author,
art.title,
art.word_count,
art.views
FROM articles art
INNER JOIN authors a ON art.author_id = a.id;
-- Challenge 2
CREATE TABLE flight_bookings (
customer_name VARCHAR(50),
customer_status ENUM('NONE', 'SILVER', 'GOLD'),
flight_number VARCHAR(10),
aircraft VARCHAR(50) ,
total_aircraft_seats INT,
flight_mileage INT,
total_customer_mileage INT
);
INSERT INTO flight_bookings (
customer_name,
customer_status,
flight_number,
aircraft,
total_aircraft_seats,
flight_mileage,
total_customer_mileage
) VALUES
('Agustine Riviera', 'Silver', 'DL143', 'Boeing 747', 400, 135, 115235),
('Agustine Riviera', 'Silver', 'DL122', 'Airbus A330', 236, 4370, 115235),
('Alaina Sepulvida', 'None', 'DL122', 'Airbus A330', 236, 4370, 6008),
('Agustine Riviera', 'Silver', 'DL143', 'Boeing 747', 400, 135, 115235),
('Tom Jones', 'Gold', 'DL122', 'Airbus A330', 236, 4370, 205767),
('Tom Jones', 'Gold', 'DL53', 'Boeing 777', 264, 2078, 205767),
('Agustine Riviera', 'Silver', 'DL143', 'Boeing 747', 400, 135, 115235),
('Sam Rio', 'None', 'DL143', 'Boeing 747', 400, 135, 2653),
('Agustine Riviera', 'Silver', 'DL143', 'Boeing 747', 400, 135, 115235),
('Tom Jones', 'Gold', 'DL222', 'Boeing 777', 264, 1765, 205767),
('Jessica James', 'Silver', 'DL143', 'Boeing 747', 400, 135, 127656),
('Sam Rio', 'None', 'DL143', 'Boeing 747', 400, 135, 2653),
('Ana Janco', 'Silver', 'DL222', 'Boeing 777', 264, 1765, 136773),
('Jennifer Cortez', 'Gold', 'DL222', 'Boeing 777', 264, 1765, 300582),
('Jessica James', 'Silver', 'DL122', 'Airbus A330', 236, 4370, 127656),
('Sam Rio', 'None', 'DL37', 'Boeing 747', 400, 531, 2653),
('Christian Janco', 'Silver', 'DL222', 'Boeing 777', 264, 1765, 14642);
CREATE TABLE customers(
customer_id INT AUTO_INCREMENT PRIMARY KEY,
name varchar(50),
status ENUM ('NONE','SILVER','GOLD'),
total_milage INT
);
CREATE TABLE flights (
flight_id INT AUTO_INCREMENT PRIMARY KEY,
flight_number VARCHAR(10) UNIQUE,
flight_mileage INT
);
CREATE TABLE aircrafts (
aircraft_id INT AUTO_INCREMENT PRIMARY KEY,
model VARCHAR(50) UNIQUE,
total_seats INT
);
CREATE TABLE bookings (
booking_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT,
flight_id INT,
aircraft_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
FOREIGN KEY (flight_id) REFERENCES flights(flight_id),
FOREIGN KEY (aircraft_id) REFERENCES aircrafts(aircraft_id)
);
-- Challenge 3
-- 1
SELECT COUNT(DISTINCT flight_number) FROM flights;
-- 2
SELECT AVG(mileage) FROM flights;
-- 3
SELECT AVG(total_seats) FROM aircrafts;
-- 4
SELECT status, AVG(total_mileage) FROM customers GROUP BY status;
-- 5
SELECT status, MAX(total_mileage) FROM customers GROUP BY status;
-- 6
SELECT 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;