문제링크 🚩
https://school.programmers.co.kr/learn/courses/30/lessons/131118
📕 문제 접근 📕
REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.
와 같은 문제를 조건별로 전략을 세워 문제를 풀이하였다.
REST_INFO와 REST_REVIEW 테이블에서 JOIN 혹은 WHERE을 활용 => 2가지 전부 풀이로 사용
Having -> 서울에 위치한
SELECT -> 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때
AVG -> 리뷰 평균점수는
ROUND -> 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로
ORDER BY -> 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.
💻 Code 💻
-- 코드를 입력하세요
-- REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.
# SELECT
# RV.REST_ID, R.REST_NAME, R.FOOD_TYPE, R.FAVORITES, R.ADDRESS, ROUND(AVG(RV.REVIEW_SCORE),2) AS SCORE
# FROM
# REST_INFO as R, REST_REVIEW as RV
# WHERE
# R.REST_ID = RV.REST_ID
# GROUP BY
# RV.REST_ID
# HAVING
# R.ADDRESS LIKE '서울%'
# ORDER BY
# SCORE DESC, R.FAVORITES DESC
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 A
JOIN
REST_INFO B ON A.REST_ID = B.REST_ID
GROUP BY
A.REST_ID
HAVING
B.ADDRESS LIKE '서울%'
ORDER BY SCORE DESC, B.FAVORITES DESC
📖 배운점 📖
- 내림차순 조건이 2개일 때 해결하는 법을 알게되었다.
'SQL' 카테고리의 다른 글
[프로그래머스] SQL -SUM, COUNT, DISTINCT, GROUPY BY (0) | 2023.08.09 |
---|---|
[프로그래머스] 가격이 제일 비싼 식품의 정보 출력하기 (0) | 2023.08.08 |
[프로그래머스] 오랜 기간 보호한 동물(1) - JOIN (0) | 2023.07.26 |