解答
221
SQL文(クエリ)
SELECT * FROM ( SELECT CASE WHEN c.gender = 1 THEN "男性" WHEN c.gender = 2 THEN "女性" ELSE "その他" END AS gender , p.product_name , SUM(s.revenue) AS sum_rev , RANK() OVER (PARTITION BY gender ORDER BY SUM(s.revenue) DESC) AS rank_in_gender FROM sample.sales AS s LEFT JOIN sample.customers AS c USING (user_id) LEFT JOIN sample.products AS p USING (product_id) GROUP BY c.gender , p.product_name ORDER BY sum_rev DESC ) WHERE rank_in_gender <= 3 ORDER BY 1 , 3 DESC