
WITH
genre_avg AS (
SELECT
genre_id,
round(avg(critic_score), 3) critic_score,
ceiling(avg(critic_count)) critic_count,
round(avg(user_score), 3) user_score,
ceiling(avg(user_count)) user_count
FROM
games
GROUP BY
genre_id
)
SELECT
a.game_id,
a.name,
ifnull(a.critic_score, b.critic_score) critic_score,
ifnull(a.critic_count, b.critic_count) critic_count,
ifnull(a.user_score, b.user_score) user_score,
ifnull(a.user_count, b.user_count) user_count
FROM
games a
JOIN genre_avg b ON a.genre_id = b.genre_id
WHERE
a.year >= 2015
AND (
a.critic_score is null
OR a.user_score is null
)
이렇게 3개로 나눌 수 있다.
1번만 해결하는 코드(위)를 짜고 제출을 눌렀는데, 오류가 밑과 같이 떴다.

제출한 코드의 1번째 레코드의 1번째 컬럼의 값은 21이 아닌데 왜 저렇게 뜬건지 모르겠다..
결론은 ifnull 을 사용하여 null 값일시 평균값으로 대체되도록 코드를 짰고, 통과되었다!
SELECT
a.game_id,
a.name,
ifnull(a.critic_score, b.critic_score) critic_score,
ifnull(a.critic_count, b.critic_count) critic_count,
ifnull(a.user_score, b.user_score) user_score,
ifnull(a.user_count, b.user_count) user_count