728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131124
- 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문 작성
- 리뷰 작성일 기준 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트 기준 오름차순 정렬
- 쿼리 결과 : 회원 이름, 리뷰 텍스트, 리뷰 작성일
테이블
MEMBER_PROFILE | |
REST_REVIEW |
풀이과정
- 최대 리뷰 작성 수를 가진 회원 아이디를 찾은 뒤 해당 회원 아이디를 가진 회원의 이름, 리뷰 내용, 리뷰 작성 날짜를 조회함
- 최대 리뷰 작성 수 : COUNT(각 회원 별 리뷰 작성 수 카운트 : 서브쿼리2) = MAX(각 회원 별 리뷰 작성 수 카운트 : 서브쿼리1)
- 최대 리뷰 작성 수를 가진 회원 아이디 : MEMBER_ID IN(최대 리뷰 작성 수를 가진 회원 아이디 : 서브쿼리3)
- 위 두 조건에 부합한 회원 아이디와 매칭되는 회원 이름, 리뷰 내용, 리뷰 작성 날짜 조회
- 리뷰 작성 날짜 오름차순, 리뷰 내용 오름차순 정렬해주면 끝!
# 정답
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | SELECT MP.MEMBER_NAME, RR.REVIEW_TEXT, DATE_FORMAT(RR.REVIEW_DATE, '%Y-%m-%d') REVIEW_DATE FROM REST_REVIEW RR JOIN MEMBER_PROFILE MP ON RR.MEMBER_ID = MP.MEMBER_ID WHERE RR.MEMBER_ID IN (SELECT MEMBER_ID FROM REST_REVIEW GROUP BY MEMBER_ID HAVING COUNT(REVIEW_ID) = (SELECT MAX(CRI) FROM (SELECT MEMBER_ID, COUNT(REVIEW_ID) CRI FROM REST_REVIEW GROUP BY MEMBER_ID) A -- 서브쿼리1 : 각 회원의 리뷰 작성 수 ) -- 서브쿼리2: 최대 리뷰 작성 수 ) -- 서브쿼리3: IN(최대 리뷰 작성 수를 보유한 회원 아이디) ORDER BY REVIEW_DATE, RR.REVIEW_TEXT | cs |
728x90
'코딩테스트 > SQL 코드카타' 카테고리의 다른 글
MySQL 프로그래머스 | FrontEnd 개발자 찾기 (비트 연산자로 조인하기) (0) | 2024.09.20 |
---|---|
MySQL 프로그래머스 | 상품을 구매한 회원 비율 구하기 (2) | 2024.09.19 |
MySQL 프로그래머스 | 자동차 대여 기록 별 대여 금액 구하기 (ON과 WHERE절 차이) (2) | 2024.09.17 |
MySQL 프로그래머스 | 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2024.09.16 |
MySQL 프로그래머스 | 자동차 평균 대여 기간 구하기 (DATEDIFF 함수 주의할 점, +1을 해줘야 하는 이유) (1) | 2024.09.13 |
댓글