Forum

Posted by deepthi, Oct. 16, 2023, 12:41 p.m.

wanted to find why you joined to the tables again in your solution?

Here is the query which I am referring to , I  am getting the solution even without joining film_category and category tables to film_revenue CTE, can you explain why you joined Again.

WITH film_revenue AS (
  SELECT  
    F.film_id,    
    MAX(C.name) AS category,
    SUM(P.amount) revenue
  FROM payment P
  INNER JOIN rental R
  ON R.rental_id = P.rental_id
  INNER JOIN inventory I
  ON I.inventory_id = R.inventory_id  
  INNER JOIN film F
  ON F.film_id = I.film_id
  INNER JOIN film_category FC
  ON FC.film_id = F.film_id
  INNER JOIN category C
  ON C.category_id = FC.category_id
  GROUP BY F.film_id
)

SELECT * FROM (
  SELECT  
    category,
    FR.film_id,
    revenue,    
    ROW_NUMBER() OVER(PARTITION BY category ORDER BY revenue DESC) row_num    
  FROM film_revenue FR
  INNER JOIN film_category FC
  ON FC.film_id = FR.film_id
  INNER JOIN category C
  ON C.category_id = FC.category_id
) X
WHERE row_num <= 2;

Answers

Hi deepthi,

Thanks for your question, you are absolutely right, the INNER JOIN in the later part of the query does seem to be redundant.

You don't need them!

Thanks,

Leon

 

 

SQLPad user avatar

Leon (949)

Oct. 17, 2023, 11:14 a.m.