https://school.programmers.co.kr/learn/courses/30/lessons/131118

 

프로그래머스

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

programmers.co.kr

코드설명

SELECT + JOIN + LIKE  를 활용합니다.

 

  1. SELECT 문:
    • ROUND(AVG(RR.REVIEW_SCORE), 2) AS REVIEW_SCORE: 이 부분은 리뷰 점수의 평균을 계산하고 그 값을 반올림하여 "REVIEW_SCORE"라는 별칭으로 지정합니다.
  2. FROM 절:
    • FROM REST_INFO AS RI: 이 부분은 "REST_INFO" 테이블에 대한 별칭 "RI"를 생성합니다.
    • INNER JOIN REST_REVIEW AS RR ON RI.REST_ID = RR.REST_ID: 이 부분은 "REST_REVIEW" 테이블과 "REST_INFO" 테이블을 "REST_ID"를 기준으로 INNER JOIN합니다.
  3. WHERE 절:
    • WHERE RI.ADDRESS LIKE '서울%': 이 부분은 "서울"로 시작하는 주소를 가진 레스토랑만 선택하는 조건입니다. 
  4. GROUP BY 절:
    • GROUP BY RI.REST_ID: 이 부분은 "REST_ID"를 기준으로 그룹화합니다. 이는 각 레스토랑에 대한 평균 리뷰 점수를 계산하기 위한 그룹화입니다.
  5. HAVING 절:
    • HAVING RI.ADDRESS LIKE '서울%': 이 부분은 그룹화된 결과에서 "서울"로 시작하는 주소를 가진 레스토랑만 선택하는 조건입니다.
  6. ORDER BY 절:
    • ORDER BY REVIEW_SCORE DESC, RI.FAVORITES DESC: 이 부분은 "REVIEW_SCORE"를 기준으로 내림차순으로 정렬하고, 그 후에 "FAVORITES"를 기준으로 내림차순으로 정렬합니다.

문제에서 '서울%'로 해야 처리가 올바르게 됩니다. '%서울%'로 할경우 동서울 일경우에도 검색됩니다.

코드

WHERE조건으로 필터링할때.

SELECT RI.REST_ID, RI.REST_NAME, RI.FOOD_TYPE, RI.FAVORITES, RI.ADDRESS, ROUND(AVG(RR.REVIEW_SCORE), 2) AS REVIEW_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 REVIEW_SCORE DESC,  RI.FAVORITES DESC

 

HAVING으로 필터링할때.

SELECT RI.REST_ID, RI.REST_NAME, RI.FOOD_TYPE, RI.FAVORITES, RI.ADDRESS, ROUND(AVG(RR.REVIEW_SCORE), 2) AS REVIEW_SCORE
FROM REST_INFO AS RI
INNER JOIN REST_REVIEW AS RR
ON RI.REST_ID = RR.REST_ID
GROUP BY RI.REST_ID
HAVING RI.ADDRESS LIKE '서울%'
ORDER BY REVIEW_SCORE DESC,  RI.FAVORITES DESC

 

+ Recent posts