문제링크
REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요
https://school.programmers.co.kr/learn/courses/30/lessons/131118
풀이
처음에 join을 사용해서 풀어야할까 고민했지만 join을 쓰면 복잡할 것 같아서 서브 쿼리 방식이 더 나을 것 같다고 생각하였다.
1. 가장 먼저 서울에 위치한 식당 조건을 작성하였다.
2. 리뷰 평균 점수를 구하는 서브쿼리를 작성하고 AVG , ROUND 함수를 사용하여 평균값과 반올림을 하였다.
3. SELECT문을 한번 감싸서 다시 한번 SELECT 문을 만들고 SCORE 값이 없는 데이터를 나오지 않게 NOT NULL 조건을 추가하였다.
4. 마지막으로 평균점수를 기준 내림차순 , 즐겨찾기수를 기준으로 내림차순 정렬 하였다.
쿼리
SELECT REST_ID , REST_NAME , FOOD_TYPE , FAVORITES , ADDRESS , SCORE
FROM (
SELECT
A.REST_ID ,
A.REST_NAME ,
(SELECT ROUND(AVG(REVIEW_SCORE),2) FROM REST_REVIEW B WHERE B.REST_ID = A.REST_ID ) AS SCORE,
A.FAVORITES,
A.FOOD_TYPE,
A.ADDRESS
FROM
REST_INFO A
WHERE
A.ADDRESS LIKE '서울%'
)
WHERE SCORE IS NOT NULL
ORDER BY SCORE DESC , FAVORITES DESC;
'SQL' 카테고리의 다른 글
[SQL 문제풀이] 입양 시각 구하기(2)-프로그래머스 (0) | 2023.04.12 |
---|---|
[SQL 문제풀이] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기-프로그래머스 (0) | 2023.04.12 |
[SQL 문제풀이] 가격이 제일 비싼 식품의 정보 출력하기-프로그래머스 (0) | 2023.04.12 |
[SQL 문제풀이] 가격이 제일 비싼 식품의 정보 출력하기-프로그래머스 (0) | 2023.04.12 |
[SQL 문제풀이] 오프라인/온라인 판매 데이터 통합하기-프로그래머스 (0) | 2023.04.12 |