문제
다양한 게임 플랫폼이 존재하지만, 제작사가 같은 플랫폼 들은 같은 계열의 플랫폼으로 분류됩니다. 그 중 아래 세 플랫폼 계열은 점유율이 높은 메이저 플랫폼 계열입니다. 플랫폼 계열이 다르면 게임 개발을 새로해야하는 경우가 많기 때문에, 많은 게임 개발사들은 여러 플랫폼 계열에 게임을 출시하는 것을 어려워 합니다.
- Sony: 'PS3', 'PS4', 'PSP', 'PSV'
- Nintendo: 'Wii', 'WiiU', 'DS', '3DS'
- Microsoft: 'X360', 'XONE'
데이터베이스를 조회해 2012년 이후 출시된 게임들 중 둘 이상의 메이저 플랫폼 계열에 출시된 게임 이름을 출력하는 쿼리를 작성해주세요. 쿼리 결과에는 아래 컬럼만 포함되어 있어야 하고, 중복된 게임은 1번만 출력되어야 합니다.
코드
WITH major_p AS (
SELECT *,
CASE
WHEN P.name = 'PS3' OR P.name = 'PS4' OR P.name = 'PSP' OR P.name = 'PSV' THEN "Sony"
WHEN P.name = 'Wii' OR P.name = 'WiiU' OR P.name = 'DS' OR P.name = '3DS' THEN "Nintendo"
WHEN P.name = 'X360' OR P.name = 'XONE' THEN "Microsoft"
ELSE NULL
END AS major
FROM platforms P
)
SELECT DISTINCT G.name
FROM games G
JOIN major_p P ON G.platform_id = P.platform_id
WHERE year >= 2012 AND major IS NOT NULL
GROUP BY G.name
HAVING COUNT(DISTINCT P.major) > 1
다른 코드와 비교 했을 때 크게 내 코드와 다르지 않았다.
CASE WHEN을 잘 쓰는 문제다!
'MYSQL > solvesql' 카테고리의 다른 글
미세먼지 수치의 계절간 차이 (0) | 2025.06.23 |
---|---|
전국 카페 주소 데이터 정제하기 (1) | 2025.06.21 |
폐쇄할 따릉이 정류소 찾기 2 (1) | 2025.06.19 |
멘토링 짝꿍 리스트 (0) | 2025.06.16 |
지역별 주문의 특징 (0) | 2025.06.06 |