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

AMUD·2022년 10월 11일
1

My Database

목록 보기
2/13

문제


문제링크

접근

  • 리뷰에 대해 식당 데이터를 JOIN 연산한다.
  • 식당번호를 기준으로 GROUP BY 연산하고, ROUND, AVG 함수를 원하는 결과값을 얻는다.
  • GROUP BY에 대해 조건을 걸기 위해 HAVING과 LIKE를 이용하여 서울 식당을 필터링한다.
  • 두 가지 기준으로 정렬한다.
  • 따로 서브쿼리까지 할 필요는 없다.

풀이

-- 정답
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
profile
210's Velog :: Ambition Makes Us Diligent

1개의 댓글

comment-user-thumbnail
2023년 10월 6일

안녕하세요! 질문 좀 드려도 될까요?ㅜㅜ 왜 이번 문제에서는 서브쿼리를 사용할 필요가 없는지 궁금합니다ㅜㅜ

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

저는 서브쿼리를 사용해서 풀었는데 뭐가 잘못된 건지 모르겠어요ㅜㅜ

답글 달기