-
프로그래머스) 그룹별 조건에 맞는 식당 출력하기 풀이 (MySQL)TIL-sparta 2024. 6. 23. 20:37
학습 키워드: MySQL, Aggregation, ORDER BY
131124 - 그룹별 조건에 맞는 식당 출력하기
1) 문제 설명 요약 (원문은 링크 참고):
요약: 고객 정보를 담은 테이블 MEMBER_PROFILE과 식당 리뷰 정보를 담은 테이블 REST_REVIEW에서 리뷰를 가장 많이 작성한 고객의 이름과 고객이 작성했던 리뷰들의 리뷰 내용, 리뷰 날짜를 함께 출력하는 문제다.
2) 풀이 과정:
가장 많은 리뷰를 작성한 멤버를 알아내는 쿼리를 우선적으로 작성한 뒤, 다시 바깥의 쿼리에서 일치되는 멤버 ID를 가진 리뷰들만 출력해내면 된다.
3) 정답 쿼리:
SELECT mp.MEMBER_NAME, rr.REVIEW_TEXT, DATE_FORMAT(rr.REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE FROM MEMBER_PROFILE mp JOIN REST_REVIEW rr ON mp.MEMBER_ID=rr.MEMBER_ID WHERE (mp.MEMBER_ID) IN ( SELECT MEMBER_ID FROM REST_REVIEW GROUP BY MEMBER_ID ORDER BY COUNT(*) DESC LIMIT 1 ) ORDER BY 3, 2
4) 기타 사항:
... WHERE (mp.MEMBER_ID) IN ( SELECT MEMBER_ID FROM REST_REVIEW GROUP BY MEMBER_ID ORDER BY COUNT(*) DESC LIMIT 1 ) ... # SQL 실행 중 오류가 발생하였습니다. # This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
부트캠프를 진행하면서 최근에 코드카타 SQL 문제 몇 개를 푸는동안 지속적으로 어려움을 겪던 부분이 있었는데, 바로 서브 쿼리에서의 LIMIT의 사용이었다. 위와 같은 형태로 서브쿼리를 짜고 싶었는데 항상 에러가 출력되어서 서브 쿼리에서는 LIMIT을 쓸 수 없는 줄 알았다. 그런데 에러를 자세히 읽어보니 IN, ALL, ANY, SOME 키워드에서만 사용이 불가능한 것을 알게 되어서 앞으로 자주 사용하게 될 것 같다.
728x90'TIL-sparta' 카테고리의 다른 글
[TIL] 스파르타) Node.js 게임서버 주특기 플러스 1주차 강의 내용 정리, 2주차 강의 수강 시작 (0) 2024.06.25 [TIL] 스파르타) Node.js 게임서버 주특기 플러스 1주차 강의 수강, 프로그래머스 - 오프라인/온라인 판매 데이터 통합하기 풀이 (MySQL) (0) 2024.06.24 프로그래머스) 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 풀이 (MySQL) (0) 2024.06.22 [TIL] 타워 디펜스 팀 프로젝트 종료 (D-Day) (0) 2024.06.21 강의 과제) 응용 계층, DNS, HTTP (2) 2024.06.20