반응형
이 글은 프로그래머스 SQL 고득점 Kit 문제와 답을 정리한 글입니다.
*MySQL 버전입니다.
프로그래머스 서울에 위치한 식당 목록 출력하기 문제
💡식당 id, 식당 이름, 음식 종류, 즐겨찾기 수, 주소, 리뷰 평균 점수 가져오기
- 리뷰 평균 점수: 소수 세 번째 자리에서 반올림
- 리뷰 평균 점수 내림차순, 즐겨찾기 수 내림차순 정렬
프로그래머스 서울에 위치한 식당 목록 출력하기 답
💡 본 문제의 포인트: 두 테이블 조인, select 활용
select a.rest_id as REST_ID
, REST_NAME
, FOOD_TYPE
, FAVORITES
, ADDRESS
, b.avg_s as SCORE
from rest_info as a
, (select rest_id
, round(avg(review_score), 2) as avg_s
from rest_review
group by rest_id) as b
where a.rest_id = b.rest_id
and a.address like "서울%"
group by a.rest_id
order by b.avg_s desc, a.favorites desc;
1. rest_review테이블에서 평균 리뷰 점수 구하기
# 평균 리뷰 점수 테이블
select rest_id
, round(avg(review_score), 2) as SCORE
from rest_review
group by rest_id;
2. 1을 from 서브쿼리(인라인뷰)로 사용하기
- select 활용 문제이기에, select를 최대한 사용하고자 인라인뷰로 쿼리 작성.
select a.rest_id as REST_ID
, REST_NAME
, FOOD_TYPE
, FAVORITES
, ADDRESS
, b.avg_s as SCORE
from rest_info as a
, (select rest_id
, round(avg(review_score), 2) as avg_s
from rest_review
group by rest_id) as b
*서브쿼리 추천 글 MySQL 서브 쿼리 Subquery 기초 정리
3. 조건에 맞춰 출력하기
- 테이블 rest_info 와 rest_review에서 서로 같은 rest_id를 가진 식당 필터링.
- 서울 식당만 필터링하고자, a.address like "서울%" 사용.
- 정렬 기준인 평균 리뷰 점수, 즐겨찾기수 desc 입력.
추가 정리
💡 with 사용 ver.
with b as(
select rest_id
, round(avg(review_score), 2) as avg_s
from rest_review
group by rest_id
)
select a.rest_id as REST_ID
, REST_NAME
, FOOD_TYPE
, FAVORITES
, ADDRESS
, b.avg_s as SCORE
from rest_info as a, b
where a.address like "서울%"
and a.rest_id = b.rest_id
group by rest_id
order by score desc, favorites desc;
반응형
'SQL > 프로그래머스 SQL' 카테고리의 다른 글
MySQL 프로그래머스 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 문제 답 (0) | 2023.11.01 |
---|---|
MySQL 프로그래머스 재구매가 일어난 상품과 회원 리스트 구하기 문제 답 (0) | 2023.10.30 |
MySQL 프로그래머스 상품을 구매한 회원 비율 구하기 문제 답 (0) | 2023.09.26 |
MySQL 프로그래머스 SQL 고득점 Kit 입양 시각 구하기(1) 문제 답 (0) | 2023.09.25 |
MySQL 프로그래머스 SQL 고득점 Kit 고양이와 개는 몇 마리 있을까 문제 답 (0) | 2023.09.19 |