Below is my code for the first problem in the project.
I’m having issues with the “pct_tracks_usa” subquery.
All other queries run separately (“pct_tracks_usa” subquery uses the other subqueries).
I’m getting an empty dataframe. Not sure why or how to troubleshoot. Clues?
q = '''
WITH
n_genre_usa AS
(
SELECT
il.track_id,
g.name genre,
COUNT(il.track_id) n_tracks_sold_usa
FROM customer c
INNER JOIN invoice i
ON c.customer_id = i.customer_id
INNER JOIN invoice_line il
ON i.invoice_id = il.invoice_id
INNER JOIN track t
ON il.track_id = t.track_id
INNER JOIN genre g
ON t.genre_id = g.genre_id
WHERE genre IN ('Hip Hop/Rap','Alternative & Punk','Pop','Blues')
AND c.country = 'USA'
GROUP BY t.genre_id
),
total_usa AS
(
SELECT
il.track_id,
CAST(COUNT(il.track_id) AS FLOAT) n_total
FROM
invoice_line il
INNER JOIN invoice i
ON il.invoice_id = i.invoice_id
INNER JOIN customer c
ON i.customer_id = c.customer_id
WHERE c.country = 'USA'
),
pct_tracks_usa AS
(
SELECT
ngu.track_id,
(ngu.n_tracks_sold_usa/tu.n_total) n_tracks_sold_usa_pct
FROM
n_genre_usa ngu
INNER JOIN total_usa tu
ON ngu.track_id = tu.track_id
)
SELECT
ngu.genre,
ngu.n_tracks_sold_usa,
ptu.n_tracks_sold_usa_pct
FROM n_genre_usa ngu
LEFT JOIN pct_tracks_usa ptu
ON ngu.track_id = ptu.track_id
'''