본문 바로가기

SQL

[SQL 문제풀이] 식품분류별 가장 비싼 식품의 정보 조회하기-프로그래머스

문제링크

 

MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요. 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요.



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

 

프로그래머스

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

programmers.co.kr

 

풀이

 

1. 먼저 리뷰를 가장 많이 작성한 회원을 구하는 쿼리를 작성하였다.

2. 리뷰를 가장 많이 작성한 회원의 MEMBER_ID와 RANK를 하나의 컬럼에 붙여서 MEMBER_PROFILE의 MEMBER_ID에 1을 붙여 1순위인 회원만 추출하였다.

3. REST_REVIEW 테이블과 JOIN하였다.

4. 리뷰작성일 기준, 리뷰 텍스트 기준으로 오름차순 정렬하였다.

 

쿼리

 

SELECT 
A.MEMBER_NAME,
B.REVIEW_TEXT,
TO_CHAR(B.REVIEW_DATE,'YYYY-MM-DD') AS REVIEW_DATE
FROM 
MEMBER_PROFILE  A , REST_REVIEW B
WHERE
A.MEMBER_ID||1 IN (
                    SELECT
                    MEMBER_ID||RANK() OVER (ORDER BY COUNT(1) DESC) AS MEMBER_ID
                    FROM
                    REST_REVIEW
                    GROUP BY MEMBER_ID  
                ) 
AND A.MEMBER_ID = B.MEMBER_ID
ORDER BY REVIEW_DATE ASC , REVIEW_TEXT ASC