-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNetflix.sql
More file actions
171 lines (147 loc) · 3.41 KB
/
Netflix.sql
File metadata and controls
171 lines (147 loc) · 3.41 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
#1
SELECT type, COUNT(*) AS total_content
FROM netflix
GROUP BY type
;
#2
SELECT type, rating, COUNT(*)
FROM netflix
GROUP BY 1,2
# ORDER BY 3 DESC
ORDER BY 1,3 DESC
;
SELECT type, rating
FROM ( SELECT type, rating, COUNT(*), RANK() OVER( PARTITION BY type ORDER BY COUNT(*) DESC) AS ranking
FROM netflix
GROUP BY 1,2
) AS temp
WHERE ranking = 1
# ORDER BY 3 DESC
# ORDER BY 1,3 DESC
;
#3
SELECT *
FROM netflix
WHERE type = 'Movie'
AND release_year = 2020
;
#4
WITH RECURSIVE SplitCountries AS (
SELECT
show_id,
TRIM(SUBSTRING_INDEX(country, ',', 1)) AS new_country,
SUBSTRING(country, LOCATE(',', country) + 1) AS remaining_countries
FROM netflix
WHERE country IS NOT NULL
UNION ALL
SELECT
show_id,
TRIM(SUBSTRING_INDEX(remaining_countries, ',', 1)) AS new_country,
SUBSTRING(remaining_countries, LOCATE(',', remaining_countries) + 1) AS remaining_countries
FROM SplitCountries
WHERE remaining_countries LIKE '%,%'
)
SELECT
new_country,
COUNT(show_id) AS total_content
FROM SplitCountries
GROUP BY new_country
ORDER BY total_content DESC
LIMIT 5
;
#5
SELECT *
FROM netflix
WHERE type = 'Movie'
AND duration = (SELECT MAX(duration)
FROM netflix)
;
#6
SELECT *
FROM netflix
WHERE STR_TO_DATE(date_added, '%M %d, %Y') >= CURDATE() - INTERVAL 5 YEAR
;
#8
SELECT *,
CAST(SUBSTRING_INDEX(duration, ' ', 1) AS UNSIGNED) AS Seasons
FROM netflix
WHERE type = 'TV Show'
AND CAST(SUBSTRING_INDEX(duration, ' ', 1) AS UNSIGNED) > 5
;
#9
WITH RECURSIVE Splitgenre AS (
SELECT
show_id,
TRIM(SUBSTRING_INDEX(listed_in, ',', 1)) AS genre,
SUBSTRING(listed_in, LOCATE(',', country) + 1) AS remaining_genre
FROM netflix
WHERE listed_in IS NOT NULL
UNION ALL
SELECT
show_id,
TRIM(SUBSTRING_INDEX(remaining_genre, ',', 1)) AS genre,
SUBSTRING(remaining_genre, LOCATE(',', remaining_genre) + 1) AS remaining_genre
FROM Splitgenre
WHERE remaining_genre LIKE '%,%'
)
SELECT
genre,
COUNT(show_id) AS total_content
FROM Splitgenre
GROUP BY genre
ORDER BY total_content DESC
;
#10
SELECT EXTRACT(Year
FROM STR_TO_DATE(date_added, '%M %d, %Y')) AS years,
COUNT(*) AS year_content,
ROUND( CAST(COUNT(*) AS UNSIGNED)/CAST((SELECT * FROM netflix WHERE country = 'India') AS UNSIGNED)* 100,2) AS avg_year
FROM netflix
WHERE country = 'India'
GROUP BY 1
;
#13
SELECT *
FROM netflix
WHERE casts LIKE '%Salman Khan%'
AND released_year > EXTRACT(Year FROM CURRENT_DATE()) - 10
;
#14
WITH RECURSIVE Splitcast AS (
SELECT
show_id,
TRIM(SUBSTRING_INDEX(casts, ',', 1)) AS actors,
SUBSTRING(casts, LOCATE(',', casts) + 1) AS remaining_actor
FROM netflix
WHERE casts IS NOT NULL
UNION ALL
SELECT
show_id,
TRIM(SUBSTRING_INDEX(remaining_actor, ',', 1)) AS actors,
SUBSTRING(remaining_actor, LOCATE(',', remaining_actor) + 1) AS remaining_actor
FROM Splitcast
WHERE remaining_actor LIKE '%,%'
)
SELECT
actors,
COUNT(show_id) AS total_content
FROM Splitcast
WHERE country LIKE '%india%'
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10
;
#15
WITH category_table AS
(
SELECT * ,
CASE
WHEN description LIKE '%kill%' OR
description LIKE '%violence%' THEN 'BAD'
ELSE 'GOOD'
END category
FROM netflix
)
SELECT category , COUNT(*) AS total_content
FROM category_table
GROUP BY 1