https://solvesql.com/problems/main-platform-of-game-developers/
-- 특정 개발자(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위인 플랫폼만 조회
'SQL' 카테고리의 다른 글
[solvesql - day 15] 폐쇄할 따릉이 정류소 찾기 2 (0) | 2025.01.11 |
---|---|
[solvesql - day 14] 전력 소비량 이동 평균 구하기 (0) | 2025.01.11 |
[solvesql - day 12] 3년간 들어온 소장품 집계하기 (0) | 2025.01.11 |
[solvesql - day 11] 서울숲 요일별 대기오염도 계산하기 (1) | 2025.01.11 |
[solvesql - day 10] 최대값을 가진 행 찾기 (0) | 2025.01.10 |