solvesql 의 게임 평점 예측하기 1
with avg_sc_and_cnt as (
SELECT gm.genre_id
, round(avg(critic_score),3) as avg_critic_sc
, ceil(avg(critic_count)) as avg_critic_cnt
, round(avg(user_score),3) as avg_user_sc
, ceil(avg(user_count)) as avg_user_cnt
FROM games gm join genres gr on gm.genre_id = gr.genre_id
GROUP BY gm.genre_id
)
SELECT game_id
, name
, CASE WHEN a.critic_score is null then b.avg_critic_sc else a.critic_score END AS critic_score
, CASE WHEN a.critic_count is null then b.avg_critic_cnt else a.critic_count END AS critic_count
, CASE WHEN a.user_score is null then b.avg_user_sc else a.user_score END AS user_score
, CASE WHEN a.user_count is null then b.avg_user_cnt else a.user_count END AS user_count
FROM games a LEFT JOIN avg_sc_and_cnt b ON a.genre_id = b.genre_id
WHERE year >= 2015
AND (critic_score IS NULL OR user_score IS NULL);
내가 푼 방식은 하나의 sub table 을 만들어준 뒤 처리했다.
그리 어렵지 않은 문제지만 ,, 쬐꼼 헷갈렸다 ㅠㅠ
문제 설명에서 2015년 이후에 발매한 게임 중 누락된 평점 정보가 있는 게임에 대해서 라는 조건이 있기 때문에 조건을 꼼꼼히 잘 읽고 조건에 대한 코드 처리를 잘 해줘야 하는 것이 쿼리테스트에서 중요한 것 같다.
'coding > sql 코딩테스트' 카테고리의 다른 글
[리트코드] 178. Rank Scores (0) | 2025.01.23 |
---|---|
[solvesql] 게임 개발사의 주력 플랫폼 찾기 (0) | 2025.01.13 |
[프로그래머스] 자동차 대여 기록 별 대여 금액 구하기 (0) | 2025.01.09 |
[프로그래머스] 멸종위기의 대장균 찾기 (0) | 2025.01.06 |
[solvesql] 월별 주문 리텐션 (클래식 리텐션) (0) | 2024.12.21 |