SQL 알고리즘 코드카타

SQL 알고리즘 코드카타 20일차(2) 26.01.18(일)

nom_de_plume 2026. 1. 18. 21:22

부제:

서울에 위치한 식당 목록 출력하기, 레벨 4

 

1. 문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/131118
2. 정답 코드: 

SELECT
    ri.rest_id,
    ri.rest_name,
    ri.food_type,
    ri.favorites,
    ri.address,
    round(avg(rr.review_score), 2) as score
FROM rest_info as ri
inner join rest_review as rr
    on ri.rest_id = rr.rest_id
where ri.address like ("서울%")
group by ri.rest_id
order by
    score desc,
    ri.favorites desc;


3. 오류 상황:

SELECT
    ri.rest_id,
    ri.rest_name,
    ri.food_type,
    ri.favorites,
    ri.address,
    round(sum(rr.review_score) / count(rr.review_score), 2) as score
FROM rest_info as ri
inner join rest_review as rr
    on ri.rest_id = rr.rest_id
group by ri.rest_id
order by
    score desc,
    ri.favorites desc;

=> WHERE 절 부재

=> 평균 점수 계산 방식


4. 시도 방법:

=> WHERE 절 추가

=> AVG() 함수 사용


5. 최종 문제 해결 방법:

=> 문제에서 "서울에 위치한 식당"이라는 조건이 주어졌기에 ri.address 컬럼에서 '서울'로 시작하는 데이터를 찾기 위해 LIKE 연산자를 활용

=> AVG(rr.review_score)를 사용하면 훨씬 간결하게 평균 계산 가능