inblog logo
|
sxias
    Programmers_SQLSELECT

    [Programmers_SQL] 3. 서울에 위치한 식당 목록 출력하기

    문정준's avatar
    문정준
    Feb 26, 2025
    [Programmers_SQL] 3. 서울에 위치한 식당 목록 출력하기
    Contents
    1. 문제 설명2. 문제3. 예시4. 문제 풀이5. 결과 확인Solution
    💡
    프로그래머스 SELECT 3. 서울에 위치한 식당 목록 출력하기

    1. 문제 설명

    notion image
     

    2. 문제

    notion image
     

    3. 예시

    notion image
    notion image

    4. 문제 풀이

    SELECT a.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS, round(avg(b.REVIEW_SCORE),2) as SCORE from REST_INFO a inner join REST_REVIEW b on a.REST_ID = b.REST_ID where a.ADDRESS like '서울%' group by a.REST_ID order by SCORE desc, a.FAVORITES desc;
    • 1 Line : 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 평균 평점을 표시
      • 식당 정보 테이블, 식당 평가 테이블의 두 곳에서 데이터를 가져와야 함
      • 테이블의 별칭을 부여 (REST_INFO a, REST_REVIEW b)
      • 평균 평점은 소수점 2자리까지 반영, ‘SCORE’ 별칭 부여
        • select a.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS, round(avg(b.REVIEW_SCORE),2) as SCORE
    • 2 Line : REST_INFO, REST_REVIEW 테이블을 참조
      • 두 테이블에서 예약 ID가 같은 자료만 참조하므로 Inner Join 사용
        • from REST_INFO a inner join REST_REVIEW b
    • 3 Line : 예약 ID가 같은 데이터들만 연결
      • on a.REST_ID = b.REST_ID
    • 4 Line : 서울에 있는 식당만 표시해
      • where a.ADDRESS Like ‘서울%’
    • 5 Line : 식당 별 평점의 평균 → 식당 별 Grouping 필요
      • Unique한 REST_ID 사용
        • group by a.REST_ID
    • 6 Line : 평균 점수를 기준으로 내림차순, 점수가 같다면 즐겨찾기수를 기준으로 오름차순 정렬
      • order by SCORE asc, a.FAVORITES desc;
     

    5. 결과 확인

    notion image
    notion image
     

    Solution

    [프로그래머스: SQL 고득점 kit] 서울 매장의 리뷰 평균 구하기
    출처: [프로그래머스] : 서울에 위치한 식당 목록 출력하기문제:  매장정보와 리뷰정보 테이블을 활용하여 매장정보와 리뷰 평균 출력 1. INNER JOIN 활용하기1) 매장 정보 테이블과 리뷰 테이블을 INNER JOIN(리뷰가 있는 것만 조회 되도록)2) GROUP BY로 매장별 정보와 리뷰 평점을 집계3) where절에서 LIKE로 서울인 것을 필터링     *주의* 샘플 데이터에 '서울특별시'로 되어있어서 그대로 사용하였는데 '서울시'로 입력된 것도 있어 정답처리x     샘플만 믿지 말고 실제로 조회해보는 단계가 필요! SELECT ri.REST_ID, ri.REST_NAME, ri.FOOD_TYPE, ri.FAVORITES AS FAVORITE, ..
    [프로그래머스: SQL 고득점 kit] 서울 매장의 리뷰 평균 구하기
    https://o-s-o-jjj.tistory.com/77
    [프로그래머스: SQL 고득점 kit] 서울 매장의 리뷰 평균 구하기
     
    🚀
    Trouble Shooting
    Join하는 속성으로만 Grouping 해야 하는가?
    • No! 다른 속성으로도 가능
    • 본 문제의 경우 식당 별 평점의 평균을 구해야 하므로 식당을 Grouping해야 하고, 식당을 구분할 수 있는 기준인 REST_ID로 Grouping해야 함
    notion image
    Share article
    Contents
    1. 문제 설명2. 문제3. 예시4. 문제 풀이5. 결과 확인Solution

    Sxias ㆍ a32176740@gmail.com

    RSS·Powered by Inblog