-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathf1-stats-db-create-and-populate.sql
342 lines (306 loc) · 11.1 KB
/
f1-stats-db-create-and-populate.sql
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
# Step 1 Download the F1 folder from One Drive at
# https://datasmartpoint-my.sharepoint.com/:f:/p/tobias_seck-student/EnmhC0Ja6UpOpo2hTLYR6XIBa7SLzwQExASCZNdLDsiLsg?e=gO7Scs
# Step 2 Unpack and move the F1 folder to a location of your choice on your PC/Mac or network
# Step 3 Use the Find & Replace function in MySQL Workbench
# (Strg + F / Ctrl + F / Cmd + F --> a search bar pops up above the SQL editor featuring a drop down menu on the left --> chose Find & Replace)
# Step 4 Insert "Z:/DataSmart Point/SQL" into the find field and the location where you moved the F1 folder to on your PC into the replace field e.g. "C:/Users/User/Documents"
# Step 5 Click "Replace All"
# Step 6 Run the full SQL script to install the F1 database, create all tables, and import their datasets
# Step 7 Have fun with exploring SQL queries!
create database if not exists f1;
-- Strecken
drop table f1.circuits;
create table if not exists f1.circuits (
circuit_id smallint unsigned primary key auto_increment,
circuit_ref varchar(50),
circuit_name varchar(255),
circuit_location varchar(255),
circuit_country varchar(50),
circuit_lat decimal(12,5),
circuit_lng decimal(12,5),
circuit_alt smallint,
circuit_url varchar(255)
);
set global local_infile = 1;
load data local infile 'Z:/DataSmart Point/SQL/F1/circuits.csv'
into table f1.circuits
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(circuit_id, circuit_ref, circuit_name, circuit_location, circuit_country, circuit_lat, circuit_lng, circuit_alt, circuit_url);
-- Fahrerverzeichnis
create table if not exists f1.drivers (
driver_id int unsigned primary key auto_increment,
driver_ref varchar(50),
driver_number tinyint unsigned default null,
driver_code varchar(3) default null,
driver_firstname varchar(50),
driver_lastname varchar(50),
driver_dob date,
driver_nationality varchar(50),
driver_url varchar(255)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/drivers.csv'
into table f1.drivers
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(driver_id, driver_ref, driver_number, driver_code, driver_firstname, driver_lastname, driver_dob, driver_nationality, driver_url);
update f1.drivers set driver_number = null where driver_id in (
select t.driver_id from (select driver_id from f1.drivers where driver_number = 0) as t);
update f1.drivers set driver_code = null where driver_id in (
select t.driver_id from (select driver_id from f1.drivers where driver_code = '') as t);
-- Konstrukteurverzeichnis
create table if not exists f1.constructors (
con_id int unsigned primary key auto_increment,
con_ref varchar (20),
con_name varchar(255),
con_nationality varchar(50),
con_url varchar(255)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/constructors.csv'
into table f1.constructors
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(con_id, con_ref, con_name, con_nationality, con_url);
-- Seasonverzeichnis
create table if not exists f1.seasons (
season_year year unique,
season_url varchar(255),
primary key (season_year)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/seasons.csv'
into table f1.seasons
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(season_year, season_url);
-- Verzeichnis der Rennen
create table if not exists f1.races (
race_id int unsigned primary key auto_increment,
race_year year,
race_round tinyint unsigned,
circuit_id smallint unsigned,
race_name varchar(255),
race_date date,
race_time time,
race_url varchar(255),
race_fp1date date,
race_fp1time time,
race_fp2date date,
race_fp2time time,
race_fp3date date,
race_fp3time time,
race_qualidate date,
race_qualitime time,
race_sprintdate date,
race_sprinttime time,
foreign key(circuit_id) references f1.circuits(circuit_id)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/races.csv'
into table f1.races
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(race_id, race_year, race_round, circuit_id, race_name, race_date, race_time, race_url, race_fp1date, race_fp1time, race_fp2date, race_fp2time, race_fp3date,
race_fp3time, race_qualidate, race_qualitime, race_sprintdate, race_sprinttime);
-- Konstrukteursergebnisse
create table if not exists f1.conresults (
conres_id int unsigned primary key auto_increment,
race_id int unsigned,
con_id int unsigned,
conres_points smallint unsigned,
conres_status varchar(2),
foreign key(race_id) references f1.races(race_id),
foreign key(con_id) references f1.constructors(con_id)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/constructor_results.csv'
into table f1.conresults
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(conres_id, race_id, con_id, conres_points, conres_status);
-- Status Verzeichnis
create table if not exists f1.status (
status_id int primary key auto_increment,
status_value varchar(255)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/status.csv'
into table f1.status
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(status_id, status_value);
-- Rennergebnis Verzeichnis
create table if not exists f1.raceresults (
rres_id int primary key auto_increment,
race_id int unsigned,
driver_id int unsigned,
con_id int unsigned,
rres_number tinyint,
rres_grid tinyint,
rres_poition tinyint,
rres_positiontext varchar(10),
rres_positionorder tinyint,
rres_points tinyint,
rres_laps tinyint,
rres_time varchar(20),
rres_milliseconds int,
rres_fastestlap tinyint,
rres_rank tinyint,
rres_fastestlaptime varchar(20),
rres_fastestlapspeed decimal(6,3),
status_id int,
foreign key(race_id) references f1.races(race_id),
foreign key(driver_id) references f1.drivers(driver_id),
foreign key(con_id) references f1.constructors(con_id),
foreign key(status_id) references f1.status(status_id)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/results.csv'
into table f1.raceresults
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(rres_id, race_id, driver_id, con_id, rres_number, rres_grid, rres_poition, rres_positiontext, rres_positionorder,
rres_points, rres_laps, rres_time, rres_milliseconds, rres_fastestlap, rres_rank, rres_fastestlaptime, rres_fastestlapspeed, status_id);
update f1.raceresults set rres_milliseconds = null where rres_id in (
select t.rres_id from (select rres_id from f1.raceresults where rres_milliseconds = 0) as t);
update f1.raceresults set rres_fastestlapspeed = null where rres_id in (
select t.rres_id from (select rres_id from f1.raceresults where rres_fastestlapspeed = 0) as t);
-- Sprintergebnis Verzeichnis
create table if not exists f1.sprintresults (
sprint_id int primary key auto_increment,
race_id int unsigned,
driver_id int unsigned,
con_id int unsigned,
sprint_number smallint,
sprint_grid tinyint,
sprint_position tinyint,
sprint_positionText varchar(10),
sprint_positionorder tinyint,
sprint_points tinyint,
sprint_laps tinyint,
sprint_time varchar(20),
sprint_milliseconds int,
sprint_fastestlap tinyint,
sprint_fastestlaptime varchar(20),
status_id int,
foreign key(race_id) references f1.races(race_id),
foreign key(driver_id) references f1.drivers(driver_id),
foreign key(con_id) references f1.constructors(con_id),
foreign key(status_id) references f1.status(status_id)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/sprint_results.csv'
into table f1.sprintresults
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(sprint_id, race_id, driver_id, con_id, sprint_number, sprint_grid, sprint_position, sprint_positionText, sprint_positionorder, sprint_points,
sprint_laps, sprint_time, sprint_milliseconds, sprint_fastestlap, sprint_fastestlaptime, status_id);
-- Konstrukteurswertung Verzeichnis
create table if not exists f1.constandings (
const_id int primary key auto_increment,
race_id int unsigned,
con_id int unsigned,
const_points smallint,
const_position tinyint,
const_positiontext varchar(20),
const_wins tinyint,
foreign key(race_id) references f1.races(race_id),
foreign key(con_id) references f1.constructors(con_id)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/constructor_standings.csv'
into table f1.constandings
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(const_id, race_id, con_id, const_points,const_position, const_positiontext, const_wins);
-- Fahrerwertung Verzeichnis
create table if not exists f1.driverstandings (
dvrst_id int primary key auto_increment,
race_id int unsigned,
driver_id int unsigned,
dvrst_points smallint,
dvrst_position tinyint,
dvrst_positiontext varchar(20),
dvrst_wins tinyint,
foreign key(race_id) references f1.races(race_id),
foreign key(driver_id) references f1.drivers(driver_id)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/driver_standings.csv'
into table f1.driverstandings
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(dvrst_id, race_id, driver_id, dvrst_points, dvrst_position, dvrst_positiontext, dvrst_wins);
-- Qualifying Verzeichnis
create table if not exists f1.qualifying (
q_id int primary key auto_increment,
race_id int unsigned,
driver_id int unsigned,
con_id int unsigned,
q_number tinyint,
q_position tinyint,
q_q1 varchar(20),
q_q2 varchar(20),
q_q3 varchar(20),
foreign key(race_id) references f1.races(race_id),
foreign key(driver_id) references f1.drivers(driver_id),
foreign key(con_id) references f1.constructors(con_id)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/qualifying.csv'
into table f1.qualifying
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(q_id, race_id, driver_id, con_id, q_number, q_position, q_q1, q_q2, q_q3);
-- Pitstop Verzeichnis
create table if not exists f1.pitstops (
race_id int unsigned,
driver_id int unsigned,
pit_stop tinyint unsigned,
pit_lap tinyint unsigned,
pit_time time,
pit_duration varchar(20),
pit_milliseconds int,
foreign key(race_id) references f1.races(race_id),
foreign key(driver_id) references f1.drivers(driver_id)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/pit_stops.csv'
into table f1.pitstops
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(race_id, driver_id, pit_stop, pit_lap, pit_time, pit_duration, pit_milliseconds);
-- Rundenzeiten Verzeichnis
create table if not exists f1.laptimes (
race_id int unsigned,
driver_id int unsigned,
lap_lap tinyint unsigned,
lap_position tinyint,
lap_time time,
lap_milliseconds int,
foreign key(race_id) references f1.races(race_id),
foreign key(driver_id) references f1.drivers(driver_id)
);
load data local infile 'Z:/DataSmart Point/SQL/F1/lap_times.csv'
into table f1.laptimes
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
ignore 1 rows
(race_id, driver_id, lap_lap, lap_position, lap_time, lap_milliseconds);