Skip to content

Instantly share code, notes, and snippets.

@kylebrandt
Created May 12, 2025 19:33
Show Gist options
  • Save kylebrandt/d550bbb5d8f1e8b14ddd4750261d0ee3 to your computer and use it in GitHub Desktop.
Save kylebrandt/d550bbb5d8f1e8b14ddd4750261d0ee3 to your computer and use it in GitHub Desktop.
Some Wide/Long SQL
/* Long
WITH movie_genre AS (
SELECT
A.title,
A.year,
B.Genre AS genre
FROM A
JOIN B ON A.imdb_id = B.imdb_id
),
genre_totals AS (
SELECT genre, COUNT(*) AS total
FROM movie_genre
WHERE genre IS NOT NULL AND genre != ''
GROUP BY genre
ORDER BY total DESC
LIMIT 10
)
SELECT
CAST(movie_genre.year AS CHAR) AS year,
movie_genre.genre,
COUNT(*) AS count
FROM movie_genre
JOIN genre_totals ON movie_genre.genre = genre_totals.genre
GROUP BY movie_genre.year, movie_genre.genre
ORDER BY movie_genre.year, movie_genre.genre;
*/
/* Wide */
WITH movie_genre AS (
SELECT
A.title,
A.year,
B.Genre AS genre
FROM A
JOIN B ON A.imdb_id = B.imdb_id
),
genre_totals AS (
SELECT genre
FROM movie_genre
WHERE genre IS NOT NULL AND genre != ''
GROUP BY genre
)
SELECT
CAST(mg.year AS CHAR) AS year,
COUNT(CASE WHEN mg.genre = 'Action' THEN 1 END) AS Action,
COUNT(CASE WHEN mg.genre = 'Animation' THEN 1 END) AS Animation,
COUNT(CASE WHEN mg.genre = 'Comedy' THEN 1 END) AS Comedy,
COUNT(CASE WHEN mg.genre = 'Crime' THEN 1 END) AS Crime,
COUNT(CASE WHEN mg.genre = 'Drama' THEN 1 END) AS Drama,
COUNT(CASE WHEN mg.genre = 'Fantasy' THEN 1 END) AS Fantasy,
COUNT(CASE WHEN mg.genre = 'Family' THEN 1 END) AS Family,
COUNT(CASE WHEN mg.genre = 'History' THEN 1 END) AS History,
COUNT(CASE WHEN mg.genre = 'Horror' THEN 1 END) AS Horror,
COUNT(CASE WHEN mg.genre = 'Mystery' THEN 1 END) AS Mystery,
COUNT(CASE WHEN mg.genre = 'Romance' THEN 1 END) AS Romance,
COUNT(CASE WHEN mg.genre = 'Science Fiction' THEN 1 END) AS `Science Fiction`,
COUNT(CASE WHEN mg.genre = 'Thriller' THEN 1 END) AS Thriller,
COUNT(CASE WHEN mg.genre = 'War' THEN 1 END) AS War
FROM movie_genre mg
JOIN genre_totals gt ON mg.genre = gt.genre
GROUP BY mg.year
ORDER BY mg.year;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment