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

kiki·2024년 1월 2일
0

프로그래머스

목록 보기
33/76

문제 링크

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

문제 설명

  • 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회
  • 리뷰 평균점수는 소수점 세 번째 자리에서 반올림
  • 평균점수를 기준으로 내림차순 정렬, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬.

정답

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

어려운 점들이 있었다! 아래의 것들을 아직 몰라 헤맸다.

  1. 특정 문자가 포함되어있는 데이터 조회 (LIKE)
  2. 그룹 별 평균 구하는 법 (GROUP BY)
  3. 그룹 별 평균 값으로 정렬 (SELECT한 칼럼의 인덱스로 접근 가능!)

정리

  • 특정 문자 포함 데이터
    • LIKE: WHERE 칼럼 LIKE "서울%" or "%서울" or "%서울%"과 같이 사용해 서울로 시작하는, 끝나는, 포함하는 데이터를 조회할 수 있다.
    • REGEXP: 여러 특정 문자를 포함하는 경우를 보고싶으면 WHERE 칼럼 REGEXP '특정1|특정2'와 같이 사용할 수 있다.
  • 그룹 별 평균: ORDER 이전에 GROUP BY 칼럼을 추가해 AVG, SUM 등의 집계함수를 그룹별로 가능케함.
  • ORDER BY: 정렬 시 칼럼 명을 다시 쓰지 않고 컬럼 번호(1부터 시작)로 지정해줄 수도 있다.
    그리고 정렬할 때 사용하는 칼럼 명은 기존의 REST_INFO나 REST_REVIEW 테이블이 아닌 조회된 테이블의 칼럼으로 적용되는 것이기 때문에, 코드에서 4 대신 그냥 SCORE로 해줘도 된다.

0개의 댓글