https://solvesql.com/problems/main-platform-of-game-developers/
이번 문제의 포인트는 각 게임 개발사의 주력 플랫폼을 찾는 것.
주력 플랫폼이란?
게임 개발사 별(developerid)로 판매량(sales~)이 가장 높은🔝 플랫폼(platform_id)
그래서 먼저 주력 플랫폼을 찾는 CTE 구문을 작성해줌.
이때 rank() 함수를 사용해 developer_id 기준으로 판매량 순위를 적어 줌.
--주력 플랫폼
WITH mainplatforms AS(
SELECT
developer_id,
platform_id,
SUM(sales_na+sales_eu+sales_jp+sales_other) AS sales,
RANK() OVER(PARTITION BY developer_id ORDER BY SUM(sales_na+sales_eu+sales_jp+sales_other) DESC) AS sales_rank
FROM
games
GROUP BY
developer_id,
platform_id
)
이후 Join과 rank가 1인 데이터를 추출!
SELECT
c.name AS developer,
p.name AS platform,
g.sales
FROM
mainplatforms g
INNER JOIN platforms p
ON g.platform_id = p.platform_id
INNER JOIN companies c
ON g.developer_id = c.company_id
WHERE 1=1
AND g.sales_rank = 1