Advented of SQL 2024 : 멀티 플랫폼 게임 찾기 (DAY 17)

Hyeon·2024년 12월 17일

SQL 문제 풀이

목록 보기
53/61

문제 탐구

데이터베이스를 조회해 2012년 이후 출시된 게임들 중 둘 이상의 메이저 플랫폼 계열에 출시된 게임 이름을 출력하는 쿼리를 작성해주세요

  • 쿼리 결과에는 아래 컬럼만 포함되어 있어야 하고, 중복된 게임은 1번만 출력

  • 개별 게임의 정보는 games 테이블에 있고, 게임 플랫폼 정보는 platforms 테이블에 저장

  • 하나의 게임이 여러 플랫폼에 출시된 경우, games 테이블에는 이름은 같고 플랫폼 정보는 다른 레코드가 여러개 있는 형태로 저장되어 있음

  • 다양한 게임 플랫폼이 존재하지만, 제작사가 같은 플랫폼 들은 같은 계열의 플랫폼으로 분류
    Sony: 'PS3', 'PS4', 'PSP', 'PSV'
    Nintendo: 'Wii', 'WiiU', 'DS', '3DS'
    Microsoft: 'X360', 'XONE'

정답코드

with platforms_n as (
select *,
case 
-- 플랫폼별 해당하는 계열 새로운 컬럼에 할당
when name in ('PS3', 'PS4', 'PSP', 'PSV') then 'Sony' 
when name in ('Wii', 'WiiU', 'DS', '3DS') then 'Nintendo'
when name in ('X360', 'XONE') then 'Microsoft'
else 'Others' end as 'Category'
from platforms ),

 t1 as (
-- 2012년 이후면서 메이저 플랫폼만 출력
select * 
from games g right join platforms_n p on g.platform_id = p.platform_id 
where year>=2012 and Category not in ('Others')
)

-- 둘 이상의 메이저 플랫폼 
select distinct name from t1 group by name having count(distinct Category)>=2;

주의할 점

  1. 중복된 게임은 1번만 출력 : distinct 넣기!
  2. 플랫폼별 해당하는 메이저 계열 & 마이너 계열 새로운 컬럼에 할당하기!
  3. 조건 잘 보기 : 2012년 이후 , 게임별 메이저 플랫폼 계열이 몇개인지 확인

0개의 댓글