SQL

[프로그래머스 SQL KIT] SELECT #2 - 서울에 위치한 식당 목록 출력하기

enayoiii 2025. 4. 8. 17:43

프로그래머스 문제 보러가기

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 설명

  • 레스토랑 정보가 담긴 REST_INFO 테이블과, 리뷰 정보가 담긴 REST_REVIEW 테이블
  • 레스토랑의 정보와 리뷰 점수의 평균을 소수점 세번째 자리에서 반올림해서 출력
  • 서울 지역의 레스토랑이어야 함
  • 평점 내림차순 및 평점이 같은경우 좋아요 개수에 대해 내림차순

코드

SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS, ROUND(AVG(V.REVIEW_SCORE),2) AS SCORE
FROM REST_INFO I, REST_REVIEW V
WHERE I.REST_ID = V.REST_ID AND I.ADDRESS LIKE '서울%'
GROUP BY I.REST_ID
ORDER BY SCORE DESC, I.FAVORITES DESC;

코드 설명

  1. 레스토랑 정보 SELECT, 리뷰 평점을 AVG()메소드를 이용해 계산
  2. 소수점 세번째 자리에서 반올림이니 소수점 두 번째 자리까지 출력되도록 ROUND(X,2)사용
  3. WHERE절에 JOIN 조건 작성
  4. WHERE절에 LIKE 메소드 사용해서 주소가 '서울'인 컬럼 출력
  5. ORDER BY절에서 평점에 대해 내림차순, 좋아요 순에 대해 내림차순 (DESC)

관련 개념

LIKE 메소드

COLUMN_NAME LIKE
  • % : 모든 문자의 0번 이상 반복
  • _ : 모든 문자 1번
  • 따라서 이를 이용해서, 주소가 서울인 것을 출력하려면 ADDRESS LIKE '서울%'
  • 다른 예시로, '00시'라는 단어를 출력하려면 ADDRESS LIKE '__시'
  • _는 한 문자와 매칭되므로, 4개의 단어를 표현하려면 4번 적으면 된다.
  • 다른 예시로, '경'으로 시작하고 '도'로 끝나는 네 글자 단어를 출력하려면, ADDRESS LIKE '경__도'
  • LIKE 뒤에 매칭할 문자를 적을 때는, 따옴표 안에 넣어 STRING으로 표시해줘야 한다.
let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });