Data house

[MYSQL] 그룹별 조건에 맞는 목록 출력 - 서브쿼리 본문

Computer Knowledge/데이터베이스

[MYSQL] 그룹별 조건에 맞는 목록 출력 - 서브쿼리

l._.been 2023. 5. 15. 12:07
728x90
문제

https://school.programmers.co.kr/learn/courses/30/lessons/131124

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 요구사항

1. 두 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL 작성
2. 회원 이름, 리뷰 텍스트, 리뷰 작성일 출력
3. 리뷰 작성일 기준 오름차순, 리뷰 텍스트 기준 오름차순 

핵심 능력

2,3은 쉽게 달성할 수 있지만, 1은 많은 생각이 필요함

리뷰를 가장 많이 작성한 회원을 알려면  -> 서브 쿼리 작성

 

 

 

인상적인 코드
SELECT M.MEMBER_NAME, R.REVIEW_TEXT, DATE_FORMAT(R.REVIEW_DATE, "%Y-%m-%d")
FROM MEMBER_PROFILE as M
JOIN (
    SELECT MEMBER_ID, REVIEW_TEXT, REVIEW_DATE
    FROM REST_REVIEW
    WHERE MEMBER_ID = (
        SELECT MEMBER_ID
        FROM REST_REVIEW
        GROUP BY MEMBER_ID
        ORDER BY COUNT(*) DESC
        LIMIT 1
    )
) R
USING(MEMBER_ID)
ORDER BY R.REVIEW_DATE, R.REVIEW_TEXT