-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSQLQuery-Pproject v2.sql
More file actions
232 lines (172 loc) · 6.87 KB
/
SQLQuery-Pproject v2.sql
File metadata and controls
232 lines (172 loc) · 6.87 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
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
SELECT * FROM PProject..CovidDeathsM
ORDER BY 3,4
--SELECT * FROM PortfolioProject..CovidVaccinations
-- Select Data Being Used
SELECT location, date, total_cases, total_deaths, population
FROM Pproject..CovidDeathsM
-- Alter date types when needed
ALTER TABLE Pproject..CovidDeathsM
ALTER COLUMN total_deaths float;
ALTER TABLE Pproject..CovidDeathsM
ALTER COLUMN total_cases float;
ALTER TABLE Pproject..CovidDeathsM
ALTER COLUMN population float;
ALTER TABLE Pproject..CovidDeathsM
ALTER COLUMN date date;
ALTER TABLE Pproject..CovidDeathsM
ALTER COLUMN new_cases float;
ALTER TABLE Pproject..CovidDeathsM
ALTER COLUMN new_deaths float;
ALTER TABLE Pproject..CovidDeathsM
ALTER COLUMN continent VARCHAR(50);
-- This needed for showing TotalDeathCount because location was showing continents
UPDATE Pproject..CovidDeathsM
SET continent = NULL
WHERE continent = ' '
-- Examine diffence between Total Cases vs Total Deaths (% Difference)
-- Shows the likelihood of death due to COVID
SELECT location, date, total_cases, total_deaths,
(total_deaths/NULLIF(total_cases,0)*100) AS DeathPercentage
FROM Pproject..CovidDeathsM
WHERE LOCATION like '%states%'
ORDER BY 1,2;
SELECT location, date, total_cases, total_deaths,
(total_deaths/NULLIF(total_cases,0))*100 AS DeathPercentage
FROM Pproject..CovidDeathsM
ORDER BY 1,2;
-- Looking at Total Cases vs. Population
-- Shows what % of population infected by COVID
SELECT location, date, population, total_cases,
(total_cases/population)*100 AS InfectedPopPercentage
FROM Pproject..CovidDeathsM
WHERE LOCATION like '%states'
ORDER BY date desc;
-- Looking at Countries with Highest Infection Rates compared to Populations
SELECT location, population, MAX(total_cases) AS HighestInfectionCount,
MAX(nullif(total_cases,0)/nullif(population,0))*100 AS InfectedPopPercentage
FROM Pproject..CovidDeathsM
WHERE continent IS NOT NULL
GROUP BY location, population
ORDER BY InfectedPopPercentage DESC;
-- Showing countries with highest death count per population
SELECT location, MAX(total_deaths) AS TotalDeathCount
FROM Pproject..CovidDeathsM
WHERE continent IS NOT NULL
GROUP BY location
ORDER BY TotalDeathCount DESC;
-- Break things down by continent Total Death Count
SELECT location, MAX(total_deaths) AS TotalDeathCount
FROM Pproject..CovidDeathsM
WHERE continent IS NULL
GROUP BY location
ORDER BY TotalDeathCount DESC;
-- Global numbers per day
SELECT date, SUM(new_cases) as TotalCasesPerDay
FROM Pproject..CovidDeathsM
--WHERE LOCATION like '%states%'
WHERE continent IS NOT NULL
GROUP BY date
ORDER BY 1,2;
-- Global numbers per day
SELECT date, SUM(new_cases) as NewCases, SUM(new_deaths) as NewDeaths
FROM Pproject..CovidDeathsM
--WHERE LOCATION like '%states%'
WHERE continent IS NOT NULL
GROUP BY date
ORDER BY 1,2;
-- Death Percentage Globally per Day
SELECT date, SUM(new_cases) as tota_cases, SUM(new_deaths) as total_deaths,
SUM(new_deaths)/SUM(NULLIF(new_cases,0))*100 as DeathPrecentage
FROM Pproject..CovidDeathsM
WHERE continent IS NOT NULL
GROUP BY date
ORDER BY 1,2;
-- ALTERNATIVE - IF the above calculation does not work (getting 0's for all DeathPercentage) the below will work.
-- Had to change the data type of both new deaths and new cases to float and not bigINT/INT for the above. DO NOT use CAST here.
SELECT date,
SUM(new_cases) AS total_cases,
SUM(new_deaths) AS total_deaths,
(SUM(new_deaths) * 100.0) / (SUM(NULLIF(new_cases, 0)))AS DeathPercentage
FROM Pproject..CovidDeathsM
WHERE continent IS NOT NULL
GROUP BY date
ORDER BY 1, 2
-- Total Death Percentage
SELECT SUM(new_cases) as NewCases, SUM(new_deaths) as NewDeaths,
SUM(new_deaths)/SUM(NULLIF(new_cases,0))*100 as TotalDeathPrecentage
FROM Pproject..CovidDeathsM
WHERE continent IS NOT NULL
--GROUP BY date
ORDER BY 1,2;
-- Looking at COVID Vaccinations
SELECT * FROM Pproject..CovidVaccinationsM
-- Altering Columns as needed
ALTER TABLE Pproject..CovidVaccinationsM
ALTER COLUMN new_vaccinations bigINT;
-- Joining Tables Together
SELECT *
FROM Pproject..CovidDeathsM dea
JOIN Pproject..CovidVaccinationsM vac
ON dea.location = vac.location
AND dea.date = vac.date;
-- Total Vaccinations in the world per day
SELECT dea.continent, dea.location, dea.date, dea.population, vac.new_vaccinations
FROM Pproject..CovidDeathsM dea
JOIN Pproject..CovidVaccinationsM vac
ON dea.location = vac.location
AND dea.date = vac.date
WHERE dea.continent IS NOT NULL
ORDER BY 2, 3;
-- Rolling Count of Vaccinations
SELECT dea.continent, dea.location, dea.date, dea.population, vac.new_vaccinations,
SUM(vac.new_vaccinations) OVER (partition by dea.Location ORDER BY dea.location, dea.date) as rolling_people_vaccinated
FROM Pproject..CovidDeathsM dea
JOIN Pproject..CovidVaccinationsM vac
ON dea.location = vac.location
AND dea.date = vac.date
WHERE dea.continent IS NOT NULL
ORDER BY 2, 3;
-- Total Population vs Vaccinated Percentage
WITH PopvsVac (continent, location, date, population, new_vaccinations, rolling_people_vaccinated) as
(
SELECT dea.continent, dea.location, dea.date, dea.population, vac.new_vaccinations,
SUM(vac.new_vaccinations) OVER (partition by dea.Location ORDER BY dea.location, dea.date) as rolling_people_vaccinated
FROM Pproject..CovidDeathsM dea
JOIN Pproject..CovidVaccinationsM vac
ON dea.location = vac.location
AND dea.date = vac.date
WHERE dea.continent IS NOT NULL
)
SELECT *, (rolling_people_vaccinated/cast(population as float))*100 FROM PopvsVac
-- Temp Table
-- DROP TABLE if Exists
CREATE TABLE #PercentPopulationVaccinated (
continent varchar(150),
location varchar(150),
date datetime,
population numeric,
new_vaccinations numeric,
rolling_people_vaccinated numeric
)
-- Inserting Data
INSERT INTO #PercentPopulationVaccinated
SELECT dea.continent, dea.location, dea.date, dea.population, vac.new_vaccinations,
SUM(vac.new_vaccinations) OVER (partition by dea.Location ORDER BY dea.location, dea.date) as rolling_people_vaccinated
FROM Pproject..CovidDeathsM dea
JOIN Pproject..CovidVaccinationsM vac
ON dea.location = vac.location
AND dea.date = vac.date
WHERE dea.continent IS NOT NULL
-- Order By 2,3
-- Selecting New Table
SELECT *, (rolling_people_vaccinated/cast(population as float))*100 FROM #PercentPopulationVaccinated
-- Creating View to store data for later visuals
CREATE VIEW Percent_Population_Vaccinated as
SELECT dea.continent, dea.location, dea.date, dea.population, vac.new_vaccinations,
SUM(vac.new_vaccinations) OVER (partition by dea.Location ORDER BY dea.location, dea.date) as rolling_people_vaccinated
FROM Pproject..CovidDeathsM dea
JOIN Pproject..CovidVaccinationsM vac
ON dea.location = vac.location
AND dea.date = vac.date
WHERE dea.continent IS NOT NULL
SELECT * FROM Percent_Population_Vaccinated