-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSQL_Game_Console.sql
More file actions
282 lines (242 loc) · 9 KB
/
Copy pathSQL_Game_Console.sql
File metadata and controls
282 lines (242 loc) · 9 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
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
-- GAME CONSOLE
-- Table "public.console_dates"
-- Column | Type | Collation | Nullable | Default
-- ---------------------------+------------------------+-----------+----------+---------
-- platform_name | character(120) | | |
-- first_retail_availability | date | | |
-- discontinued | date | | |
-- units_sold_mill | double precision | | |
-- platform_comment | character varying(120) | | |
-- Table "public.console_games"
-- Column | Type | Collation | Nullable | Default
-- -------------+-------------------------+-----------+----------+---------
-- game_name | character varying(1200) | | |
-- platform | character varying(1200) | | |
-- game_year | integer | | |
-- genre | character varying(20) | | |
-- publisher | character varying(1200) | | |
-- na_sales | double precision | | |
-- eu_sales | double precision | | |
-- jp_sales | double precision | | |
-- other_sales | double precision | | |
-- Active Platforms: Find all the names of platforms and platform comments for platforms which
-- have not been discontinued
SELECT platform_name
, platform_comment
FROM console_dates
WHERE discontinued IS NULL;
-- Popular Genres: For each sales region, find the most popular genres and overall most popular genre
-- Global Most Popular Genres
SELECT genre as Global_Top_Genres
FROM (
SELECT genre
, round(CAST(sum(na_sales) as numeric),2) as North_America_Sales
, round(CAST(sum(eu_sales) as numeric),2) as Europe_Sales
, round(CAST(sum(jp_sales) as numeric),2) as Japan_Sales
, round(CAST(sum(other_sales) as numeric),2) as Other_Region_Sales
FROM console_games
GROUP BY genre
) as genres
ORDER BY North_America_Sales + Europe_Sales + Japan_Sales + Other_Region_Sales DESC;
-- North America's Most Popular Genres
SELECT genre as North_America_Top_Genres
FROM (
SELECT genre
, round(CAST(sum(na_sales) as numeric),2) as North_America_Sales
, round(CAST(sum(eu_sales) as numeric),2) as Europe_Sales
, round(CAST(sum(jp_sales) as numeric),2) as Japan_Sales
, round(CAST(sum(other_sales) as numeric),2) as Other_Region_Sales
FROM console_games
GROUP BY genre
) as genres
ORDER BY North_America_Sales DESC;
-- Europe's Most Popular Genres
SELECT genre as Europe_Top_Genres
FROM (
SELECT genre
, round(CAST(sum(na_sales) as numeric),2) as North_America_Sales
, round(CAST(sum(eu_sales) as numeric),2) as Europe_Sales
, round(CAST(sum(jp_sales) as numeric),2) as Japan_Sales
, round(CAST(sum(other_sales) as numeric),2) as Other_Region_Sales
FROM console_games
GROUP BY genre
) as genres
ORDER BY Europe_Sales DESC;
-- Japan's Most Popular Genres
SELECT genre as Japan_Top_Genres
FROM (
SELECT genre
, round(CAST(sum(na_sales) as numeric),2) as North_America_Sales
, round(CAST(sum(eu_sales) as numeric),2) as Europe_Sales
, round(CAST(sum(jp_sales) as numeric),2) as Japan_Sales
, round(CAST(sum(other_sales) as numeric),2) as Other_Region_Sales
FROM console_games
GROUP BY genre
) as genres
ORDER BY Japan_Sales DESC;
-- Rest of the World's Most Popular Genres
SELECT genre as Other_Top_Genres
FROM (
SELECT genre
, round(CAST(sum(na_sales) as numeric),2) as North_America_Sales
, round(CAST(sum(eu_sales) as numeric),2) as Europe_Sales
, round(CAST(sum(jp_sales) as numeric),2) as Japan_Sales
, round(CAST(sum(other_sales) as numeric),2) as Other_Region_Sales
FROM console_games
GROUP BY genre
) as genres
ORDER BY Other_Region_Sales DESC;
-- Function for queying most popular genre for region
CREATE OR REPLACE FUNCTION genre_region(IN region VARCHAR(70), OUT genre VARCHAR(70), OUT sales VARCHAR(70))
AS
'SELECT genre
, region
FROM (
SELECT genre
, round(CAST(sum(na_sales) as numeric),2) as North_America_Sales
, round(CAST(sum(eu_sales) as numeric),2) as Europe_Sales
, round(CAST(sum(jp_sales) as numeric),2) as Japan_Sales
, round(CAST(sum(other_sales) as numeric),2) as Other_Region_Sales
FROM console_games
GROUP BY genre
) as genres
ORDER BY region DESC;'
LANGUAGE SQL;
-- For each Year name the publisher which released the most number of games
SELECT year
, publisher
, max_games_published
FROM (
SELECT game_year
, publisher
, count(1) as games_published
FROM console_games
GROUP BY publisher, game_year
ORDER BY game_year
) as counts1
INNER JOIN (
SELECT DISTINCT(game_year) as year
, max(games_published) as max_games_published
FROM (
SELECT game_year
, publisher
, count(1) as games_published
FROM console_games
GROUP BY publisher, game_year
ORDER BY game_year
) as counts
GROUP BY game_year
ORDER BY game_year ASC
) as counts2
ON counts1.games_published = counts2.max_games_published
AND counts1.game_year = counts2.year;
-- For each Year name the publisher which had the top gross global sales
SELECT year
, publisher
, Max_Global_Sales
FROM (
SELECT game_year
, publisher
, round(CAST(sum(na_sales) + sum(eu_sales) + sum(jp_sales) + sum(other_sales) as numeric),2) as Global_Sales
FROM console_games
GROUP BY publisher, game_year
ORDER BY game_year
) as sales1
INNER JOIN (
SELECT DISTINCT(game_year) as year
, max(Global_Sales) as Max_Global_Sales
FROM (
SELECT game_year
, publisher
, round(CAST(sum(na_sales) as numeric),2) as North_America_Sales
, round(CAST(sum(eu_sales) as numeric),2) as Europe_Sales
, round(CAST(sum(jp_sales) as numeric),2) as Japan_Sales
, round(CAST(sum(other_sales) as numeric),2) as Other_Region_Sales
, round(CAST(sum(na_sales) + sum(eu_sales) + sum(jp_sales) + sum(other_sales) as numeric),2) as Global_Sales
FROM console_games
GROUP BY publisher, game_year
ORDER BY game_year
) as counts
GROUP BY game_year
ORDER BY game_year ASC
) as sales2
ON sales1.Global_Sales = sales2.Max_Global_Sales
AND sales1.game_year = sales2.year;
-- what were the top 5 most popular games (and their genres) in Japan between 2010 and 2015?
-- How does the list compare when filtering out discontinued consoles?
-- Top 5 Games in Japan
SELECT game_name
, platform
, jp_sales
FROM console_games
WHERE game_year BETWEEN 2010 AND 2015
ORDER BY jp_sales DESC
LIMIT 5;
-- Top 5 Games in Japan
SELECT game_name
, platform
, na_sales
FROM console_games
WHERE game_year BETWEEN 2010 AND 2015
ORDER BY na_sales DESC
LIMIT 5
-- Top 5 Games in Japan (For Discontinued Consoles)
SELECT game_name
, platform
, jp_sales
FROM console_games
INNER JOIN (
SELECT platform_name
, platform_comment
FROM console_dates
WHERE discontinued <= '2016-01-01'
) as console_active
ON platform_name = platform
WHERE game_year BETWEEN 2010 AND 2015
ORDER BY jp_sales DESC
LIMIT 5;
-- Top 5 Games in Japan (Consoles currently on the Market)
SELECT game_name
, platform
, jp_sales
, game_year
FROM console_games
INNER JOIN (
SELECT platform_name
, platform_comment
FROM console_dates
WHERE discontinued IS NULL
) as console_active
ON platform_name = platform
WHERE game_year BETWEEN 2010 AND 2015
ORDER BY jp_sales DESC
LIMIT 5;
-- How Many 'The Sims' games have been release and what's their stats?
-- Total count of 'The Sims' games per console
SELECT count(1) as Total_Sims_Games_Released
, platform
FROM console_games
WHERE game_name LIKE '%The Sims %'
GROUP BY platform
ORDER BY platform ASC;
-- Total count 'Pokemon' games per console
SELECT count(1) as Pokemon_Games_Released
, platform
FROM console_games
WHERE game_name LIKE '%Pok%mon%'
GROUP BY platform
ORDER BY platform ASC;
-- Total 'Sonic' games per consol
SELECT count(1) as Sonic_Games_Released
, platform
FROM console_games
WHERE game_name LIKE '%Sonic%'
GROUP BY platform
ORDER BY platform ASC;
-- List of all games released on the Sega Megadrive (Sega Genesis)
SELECT game_name
, platform
, game_year
FROM console_games
WHERE platform = 'GEN'
ORDER BY game_year ASC;