[solvesql] 게임 평점 예측하기 1

yenpkr·2025년 4월 6일
0

sql

목록 보기
79/91

문제

제출

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
  )
  1. 평론가 평점, 평론가 수 + 사용자 평점, 사용자 수 둘 다 누락
  2. 평론가 평점, 평론가 수만 누락
  3. 사용자 평점, 사용자 수만 누락

이렇게 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

0개의 댓글