참고: https://school.programmers.co.kr/learn/courses/30/lessons/131118
✔️ 문제
문제는 다음과 같다.
✔️ 풀이
예시를 보게 되면, 두 개의 테이블을 합친 다음에
REVIEW_SCORE가 존재하는 서울 식당의 평균 점수를 출력하면서
나머지 식당의 ID와 이름, 음식 종류, 즐겨찾기, 주소를 출력하면 된다.
그렇다면 해야할 것은 다음과 같다.
1) 두 테이블을 합쳤을 때 서울에 해당하는 식당만 출력하기
2) 식당에서 리뷰 점수가 존재하고, 리뷰 평균 점수를
소수점 세 번째 자리에서 반올림하기
3) 평균점수와 즐겨찾기수를 기준으로 내림차순 정렬하기
SELECT REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND((
SELECT AVG(REVIEW_SCORE)
FROM REST_REVIEW
WHERE REST_REVIEW.REST_ID = REST_INFO.REST_ID
), 2) as REVIEW_SCORE
FROM REST_INFO
WHERE ADDRESS LIKE '서울%'
HAVING REVIEW_SCORE != ''
ORDER BY REVIEW_SCORE DESC, FAVORITES DESC
JOIN, UNION 등등 할 수 있는 방법들이 있는데
이번에는 SELECT 안에 서브쿼리를 작성해서 문제를 풀었다.
REVIEW_SCORE의 평균을 REST_REVIEW 테이블에서 같은 ID에 해당하는 것을
출력으로 가져온 다음에 ROUND로 2번째 자리 까지만 출력한다.
그 다음에 서울에 해당하는 주소 중에서 리뷰 점수가 있는 것만
뽑아서 내림차순으로 정렬하는 과정을 수행했다.
화이팅 💪
'알고리즘(algo) > SQL' 카테고리의 다른 글
[SQL] 가격이 제일 비싼 식품의 정보 출력하기 (0) | 2023.02.12 |
---|---|
[SQL] 중복 제거하기 (0) | 2023.02.12 |
[SQL] 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2023.02.11 |
[SQL] 3월에 태어난 여성 회원 목록 출력하기 (0) | 2023.02.09 |
[SQL] 오프라인/온라인 판매 데이터 통합하기 (0) | 2023.02.08 |