
📑 1. 문제설명
https://school.programmers.co.kr/learn/courses/30/lessons/131124



문제요약
리뷰를 가장 많이 작성한 회원 한 명의 리뷰 목록 조회하기
- MEMBER_NAME, REVIEW_TEXT, REVIEW_DATE 컬럼
- 작성일 기준으로 오름차순 정렬해서 조회
⭐ 2. 정답코드
-- 제일 많이 작성한 사람
-- SUM 리뷰가 MAX인사람 LEVEL1 CTE
-- 조인
WITH BEST_REVIEWER AS (
SELECT MEMBER_ID, COUNT(REVIEW_ID) AS REVIEW_CNT
FROM REST_REVIEW
GROUP BY MEMBER_ID
ORDER BY REVIEW_CNT DESC
LIMIT 1
)
SELECT p.MEMBER_NAME,
r.REVIEW_TEXT,
DATE_FORMAT(r.REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE
FROM REST_REVIEW r
JOIN BEST_REVIEWER b ON r.MEMBER_ID = b.MEMBER_ID
JOIN MEMBER_PROFILE p ON b.MEMBER_ID = p.MEMBER_ID
ORDER BY r.REVIEW_DATE;
이번 문제는 쉬워서 어려운 부분은 없었다.
- CTE
- COUNT()로 최다 리뷰어 추출하기
- MEMBER_ID와 리뷰 개수만 확인하면 되니까 조인이 필요 없음
- 메인 쿼리 →
- 최다 작성자 MEMBER_ID를 기준으로 CTE, MEMBER_PROFILE과 REST_REVIEW를 조인하기
- REIVEW_DATE 기준 내림차순 정렬
- 날짜 포매팅
틀린 부분
- 날짜 포매팅 처리 안해서 한 번에 통과되지는 않았다.
- MySQL에서 DATETIME 타입은 시분초까지 나오는데, 문제에서는 날짜까지만 나오도록 DATE_FORMAT으로 처리해야 했음
- DATE_FORMAT(컬럼명 '%Y-%m-%d')로 처리 후 통과
신기했던 점
- 컬럼명에 REVIEW_DATE로 별칭을 안 줬는데도 정답 처리가 됨
- 프로그래머스 콘솔에서 원래 컬럼명을 그대로 쓰면 컬럼명 별칭 없이도 자동으로 인식됨
- +팁) 대소문자 구별안해도 됨
'코딩테스트 > SQL테스트' 카테고리의 다른 글
| [프로그래머스] (MySQL) 조건별로 분류하여 주문상태 출력하기 (4) | 2025.08.19 |
|---|---|
| [프로그래머스] (MySQL) FrontEnd 개발자 찾기 (6) | 2025.08.17 |
| [프로그래머스] (MySQL) 노선별 평균 역 사이 거리 조회하기 (6) | 2025.08.14 |
| [프로그래머스] (MySQL) 가격대 별 상품 갯수 구하기 (5) | 2025.08.12 |
| [프로그래머스] (MySQL) 입양 시각 구하기 (1) (3) | 2025.08.11 |