CREATE OR REPLACE VIEW movies_enhanced AS
WITH
movies_with_years AS (
SELECT *, extract(year FROM "Parsed Release Date")::INT as year
FROM movies
),
filtered_movies AS (
SELECT *, ("Worldwide Gross" - "Production Budget") as "Profit"
FROM movies_with_years
WHERE
1995 <= year AND year <= 2010 AND
"Worldwide Gross" > 0
),
c AS (
SELECT "Major Genre", count()::INT AS cnt
FROM filtered_movies
GROUP BY "Major Genre"
),
movies_with_genre AS (
SELECT
CASE
-- Black Comedy -> Comedy
WHEN "Major Genre" = 'Black Comedy' THEN 'Comedy'
-- Null or < 100 films -> Other
WHEN "Major Genre" IS NULL OR (SELECT cnt FROM c WHERE "Major Genre" = m."Major Genre") < 100 THEN 'Other'
ELSE "Major Genre" END
AS "Genre",
*
FROM filtered_movies AS m
)
SELECT *
FROM movies_with_genre