-
Notifications
You must be signed in to change notification settings - Fork 0
/
sleep_vs_training_code.sql
97 lines (73 loc) · 2.47 KB
/
sleep_vs_training_code.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
CREATE TABLE new_schema1.training_data AS SELECT * FROM bakery.training_data;
RENAME TABLE new_schema1.cleaned_and_standardized_sleep_data TO new_schema1.sleep_data;
SELECT *
FROM new_schema1.training_data ;
SELECT Date
FROM new_schema1.sleep_data;
#Select statement to display the formatted date
SELECT DATE_FORMAT(STR_TO_DATE(Date, '%d.%m.%Y'), '%Y-%d-%m') AS formatted_date
FROM new_schema1.sleep_data;
#Update statement to change the date format in the table
SET SQL_SAFE_UPDATES = 0;
UPDATE new_schema1.sleep_data
SET Date = DATE_FORMAT(STR_TO_DATE(Date, '%d.%m.%Y'),'%d-%m-%Y');
SELECT DATE_FORMAT(STR_TO_DATE(WorkoutDay, '%Y-%m-%d'),'%d-%m-%Y') AS formatted_date
FROM new_schema1.training_data;
UPDATE new_schema1.training_data
SET WorkoutDay = DATE_FORMAT(STR_TO_DATE(WorkoutDay, '%Y-%m-%d'),'%d-%m-%Y');
#join training data and sleep to compare hours on bike in relation to sleep.
SELECT WorkoutDay, Date AS date
FROM new_schema1.training_data t1, new_schema1.sleep_data
LEFT JOIN
new_schema1.sleep_data t2 ON t1.WorkoutDay = t2.Date;
#creating new table
CREATE TABLE new_schema1.sleep_vs_training AS
SELECT
t2.Date,
t1.WorkoutDay,
t2.sleep,
t2.`Sleep performance %`,
t2.`Deep (SWS) duration (min)`,
t1.WorkoutType,
t1.Time,
t1.HRZone4,
t1.HRZone5,
t1.TSS
FROM new_schema1.training_data t1
LEFT JOIN new_schema1.sleep_data t2 ON t1.WorkoutDay = t2.Date;
SELECT * FROM new_schema1.sleep_vs_training
ALTER TABLE new_schema1.sleep_vs_training
DROP COLUMN WorkoutDay;
DELETE FROM new_schema1.sleep_vs_training
WHERE Date IS NULL OR Sleep IS NULL;
CREATE TABLE new_schema1.sleep_vs_training2 AS
SELECT * FROM new_schema1.sleep_vs_training3;
ALTER TABLE new_schema1.sleep_vs_training
DROP COLUMN HRZone4;
ALTER TABLE new_schema1.sleep_vs_training
DROP COLUMN HRZone5;
DELETE FROM new_schema1.sleep_vs_training
WHERE Time = '00:00:00';
#duplicates - Create a temporary table to store the IDs of the duplicate rows
CREATE TEMPORARY TABLE temp_duplicates AS
SELECT Date
FROM new_schema1.sleep_vs_training
WHERE Date IN (
SELECT Date
FROM new_schema1.sleep_vs_training
GROUP BY Date
HAVING COUNT(date) > 1
)
AND Date NOT IN (
SELECT MIN(Date)
FROM new_schema1.sleep_vs_training
GROUP BY date
HAVING COUNT(date) > 1
);
SELECT * FROM temp_duplicates;
#Update the duplicate cells to NULL
UPDATE my_table
SET date = NULL
WHERE id IN (SELECT id FROM temp_duplicates);
#Drop the temporary table
DROP TEMPORARY TABLE temp_duplicates;