[MYSQL] 서울에 위치한 식당 목록 출력하기 ⭐⭐⭐⭐ – 프로그래머스

💫 문제



 

💫 CODE

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
JOIN REST_REVIEW b ON a.REST_ID = b.REST_ID
WHERE a.ADDRESS LIKE '서울%'
GROUP BY a.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS
ORDER BY SCORE DESC, a.FAVORITES DESC;
SELECT a.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS, ROUND(b.SCORE, 2) AS SCORE
FROM REST_INFO a
JOIN (
    SELECT REST_ID, AVG(REVIEW_SCORE) AS SCORE 
    FROM REST_REVIEW 
    GROUP BY REST_ID) 
    b ON a.REST_ID = b.REST_ID
WHERE ADDRESS LIKE '서울%'
GROUP BY a.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS
ORDER BY SCORE DESC, FAVORITES DESC;

 

💫 풀이 조건

1. 서울에 위치한 식당들
2. 식당 ID(REST_ID), 식당 이름(REST_NAME), 음식 종류(FOOD_TYPE), 즐겨찾기수(FAVORITES), 주소(ADDRESS), 리뷰 평균 점수 조회
3. 리뷰 평균점수는 소수점 세 번째 자리에서 반올림
4. 평균점수를 기준으로 내림차순 정렬
5. 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬

 

💫 풀이

1. SELECT a.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS, ROUND(AVG(b.REVIEW_SCORE), 2) AS SCORE
  • 식당 ID(REST_ID), 식당 이름(REST_NAME), 음식 종류(FOOD_TYPE), 즐겨찾기수(FAVORITES), 주소(ADDRESS), 리뷰 평균 점수 조회
  • ROUND(컬럼, 숫자)를 이용하여 소수점 세 번째 자리에서 반올림
  • AVG() 함수를 이용하여 평균 점수 계산
2. JOIN REST_REVIEW b ON a.REST_ID = b.REST_ID
  • JOIN을 이용하여 REST_REVIEW 테이블 조인
  • 공통 컬럼 지정
3. WHERE a.ADDRESS LIKE '서울%'
  • LIKE를 이용하여 서울로 시작하는 주소 찾기
  • 여기서 계속 틀렸는데 문제의 주소가 서울특별시도 있고 서울시도 있어서 서울로 해야 정답 처리 !
4. GROUP BY a.REST_ID, a.REST_NAME, a.FOOD_TYPE, a.FAVORITES, a.ADDRESS
  • GROUP BY를 이용하여 그룹 지정
5. ORDER BY SCORE DESC, a.FAVORITES DESC
  • 평균점수(SCORE)를 기준으로 내림차순 정렬, 평균점수가 같다면 즐겨찾기수(FAVORITES)를 기준으로 내림차순 정렬

By Dozzing

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다