Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 안드로이드
  • enum
  • Docker
  • 다이나믹 프로그래밍
  • Android
  • Wil
  • 파이썬
  • til
  • kotlin
  • 프리코스
  • SQL
  • 문자열
  • 내림차순
  • rsocket
  • 백준
  • MariaDB
  • 프로그래머스
  • 우아한테크코스
  • 코딩테스트
  • 코틀린 인 액션
  • elasticsearch
  • 코틀린
  • kibana
  • 레포지토리
  • 에라토스테네스의 체
  • ec2
  • spring
  • grafana
  • java
  • webflux

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

DB/SQL

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

2023. 3. 22. 02:46

문제 설명

다음은 식당의 정보를 담은 REST_INFO 테이블과 식당의 리뷰 정보를 담은 REST_REVIEW 테이블입니다. REST_INFO 테이블은 다음과 같으며 REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS, TEL은 식당 ID, 식당 이름, 음식 종류, 조회수, 즐겨찾기수, 주차장 유무, 주소, 전화번호를 의미합니다.

REST_REVIEW 테이블은 다음과 같으며 REVIEW_ID, REST_ID, MEMBER_ID, REVIEW_SCORE, REVIEW_TEXT,REVIEW_DATE는 각각 리뷰 ID, 식당 ID, 회원 ID, 점수, 리뷰 텍스트, 리뷰 작성일을 의미합니다.


문제

REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.


내 풀이

REST_REVIEW와 REST_INFO를 LEFT JOIN해주어 테이블을 연결시켜줍니다.

연결된 테이블에서 WHERE를 통해 ADDRESS 필드값이 서울로 시작하는 데이터를 가져옵니다.

GROUP BY를 통해 REST_ID로 묶어주고, 리뷰 평균 점수를 구해줍니다.

 

결과는 평균점소를 기준으로 내림차순 정렬, 평균 점수가 같으면 즐겨찾기수를 기준으로 내림차순으로 정렬해야 하므로

콤마를 통해 SCORE와 FAVORITES 를 ORDER BY 해줍니다.

SELECT A.REST_ID , B.REST_NAME, B.FOOD_TYPE,
    B.FAVORITES, B.ADDRESS, ROUND(AVG(A.REVIEW_SCORE), 2) as SCORE
    FROM REST_REVIEW as A
    LEFT JOIN REST_INFO as B
    ON A.REST_ID = B.REST_ID
WHERE B.ADDRESS like '서울%'
GROUP BY A.REST_ID
ORDER BY SCORE DESC, B.FAVORITES DESC

 

728x90

'DB > SQL' 카테고리의 다른 글

[프로그래머스/SQL] 12세 이하인 여자 환자 목록 출력하기  (0) 2023.03.22
[프로그래머스/SQL] 과일로 만든 아이스크림 고르기  (0) 2023.03.22
[DB/SQL] CASE, WHEN, THEN, ELSE 사용하기  (0) 2023.03.21
[SQL] SUBSTRING_INDEX, SUBSTRING 문자열 데이터 다루기  (0) 2023.03.21
[DB/SQL] With절을 사용하여 임시 테이블 생성하기  (0) 2023.03.21
    'DB/SQL' 카테고리의 다른 글
    • [프로그래머스/SQL] 12세 이하인 여자 환자 목록 출력하기
    • [프로그래머스/SQL] 과일로 만든 아이스크림 고르기
    • [DB/SQL] CASE, WHEN, THEN, ELSE 사용하기
    • [SQL] SUBSTRING_INDEX, SUBSTRING 문자열 데이터 다루기
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바