알고리즘/프로그래머스 풀이

[프로그래머스] 서울에 위치한 식당 목록 출력하기 (MySQL)

제로타이 2023. 2. 18. 18:29

 

목차

    개요

    코딩테스트 연습 - 서울에 위치한 식당 목록 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    풀이

    JOIN을 사용할 줄 알아야 한다. 두 테이블을 JOIN할 때는 각 테이블 별칭을 설정하고 합칠 때의 기준이 되는 키를 설정해준다.
    INNER를 써도 되지만 쓰지 않아도 INNER로 인식한다. JOIN에 대해서는 더 공부하는 게 좋겠다.

    GROUP BY를 써야 한다. '식당 별'로 리뷰의 평균을 내야 하기 때문이다.
    GROUP BY를 쓸 때 조건절을 넣고 싶다면 HAVING을 써야 한다. 사용법은 동일!

    문자열에 대해 조건을 걸 때는 LIKE를 쓴다. 이때 내가 원하는 문자가 아닌 문자열 부분에 대해서는 _나 %를 쓰는데 %는 문자열의 길이에 연연하지 않는 것이고, _는 내가 원하는 문자열의 길이를 지정할 수 있도록 해준다.

    정렬은 ORDER BY이다. DESC로 내림차순으로 정렬한다. 콤마로 두번째 정렬 조건을 지정해줄 수 있다.

    코드

    SELECT A.REST_ID, A.REST_NAME, A.FOOD_TYPE, A.FAVORITES, A.ADDRESS, ROUND(AVG(B.REVIEW_SCORE), 2) "SCORE"
        FROM REST_INFO A
        JOIN REST_REVIEW B ON A.REST_ID = B.REST_ID
        GROUP BY B.REST_ID
        HAVING A.ADDRESS LIKE "서울%"
        ORDER BY AVG(B.REVIEW_SCORE) DESC, A.FAVORITES DESC
        ;