본문 바로가기
SQL

[solvesql - day 13] 게임 개발사의 주력 플랫폼 찾기

by 우솨 2025. 1. 11.

https://solvesql.com/problems/main-platform-of-game-developers/

 

https://solvesql.com/problems/main-platform-of-game-developers/

 

solvesql.com

-- 특정 개발자(developer)별로 가장 높은 판매량을 기록한 플랫폼(platform)을 조회

WITH temp AS ( 
    -- 임시 테이블 생성: 개발자별로 각 플랫폼의 총 판매량 계산 및 순위 지정
    SELECT 
        B.name AS developer,  -- 개발자 이름
        C.name AS platform,   -- 플랫폼 이름
        SUM(
            A.sales_na + A.sales_eu + A.sales_jp + A.sales_other -- 각 지역(북미, 유럽, 일본, 기타) 판매량의 합
        ) AS sales,           -- 플랫폼별 총 판매량 계산
        RANK() OVER (
            PARTITION BY B.name               -- 개발자별로 데이터 그룹화
            ORDER BY 
                SUM(
                    A.sales_na + A.sales_eu + A.sales_jp + A.sales_other
                ) DESC                        -- 플랫폼 판매량 기준으로 내림차순 정렬
        ) AS rank                             -- 플랫폼별 순위 지정 (가장 높은 판매량이 1위)
    FROM 
        games AS A                            -- 게임 데이터 테이블
    JOIN 
        companies AS B                        -- 개발자 데이터 테이블
    ON 
        A.developer_id = B.company_id         -- 개발자 ID와 회사 ID를 연결
    JOIN 
        platforms AS C                        -- 플랫폼 데이터 테이블
    ON 
        A.platform_id = C.platform_id         -- 게임의 플랫폼 ID와 플랫폼 테이블 연결
    GROUP BY 
        B.name, C.name                        -- 개발자와 플랫폼 조합별로 그룹화
)

-- 각 개발자별로 판매량이 가장 높은 플랫폼 조회
SELECT 
    developer,  -- 개발자 이름
    platform,   -- 판매량이 가장 높은 플랫폼 이름
    sales       -- 해당 플랫폼에서의 총 판매량
FROM 
    temp
WHERE 
    rank = 1    -- 판매량 순위가 1위인 플랫폼만 조회