[프로그래머스 Lv.4] 그룹별 조건에 맞는 식당 목록 출력하기

너구리로소이다·2023년 3월 26일
0

programmers-SQL

목록 보기
73/76
post-thumbnail

코딩테스트 연습 - 그룹별 조건에 맞는 식당 목록 출력하기

문제 설명

식당의 정보를 담은 REST_INFO테이블과 식당의 리뷰 정보를 담은 REST_REVIEW 테이블입니다.

MEMBER_PROFILE 테이블은 다음과 같으며
MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH
회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다.

Column nameTypeNullable
MEMBER_IDVARCHAR(100)FALSE
MEMBER_NAMEVARCHAR(50)FALSE
TLNOVARCHAR(50)TRUE
GENDERVARCHAR(1)TRUE
DATE_OF_BIRTHDATETRUE

REST_REVIEW 테이블은 다음과 같으며
REVIEW_ID, REST_ID, MEMBER_ID, REVIEW_SCORE, REVIEW_TEXT,REVIEW_DATE는 각각
리뷰 ID, 식당 ID, 회원 ID, 점수, 리뷰 텍스트, 리뷰 작성일을 의미합니다.

Column nameTypeNullable
REVIEW_IDVARCHAR(10)FALSE
REST_IDVARCHAR(10)TRUE
MEMBER_IDVARCHAR(100)TRUE
REVIEW_SCORENUMBERTRUE
REVIEW_TEXTVARCHAR(1000)TRUE
REVIEW_DATEDATETRUE

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

풀이

✨ KEYWORD CHECK

  • 리뷰를 가장 많이 작성한 회원
  • 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력
  • 리뷰 작성일을 기준으로 오름차순
  • 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬

결과

-- 리뷰를 가장 많이 작성한 회원
-- 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력
-- 리뷰 작성일을 기준으로 오름차순
-- 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬 코드를 입력하세요
SELECT M.MEMBER_NAME, A.REVIEW_TEXT, TO_CHAR(A.REVIEW_DATE,'YYYY-MM-DD') AS REVIEW_DATE
FROM MEMBER_PROFILE M
INNER JOIN (
    SELECT MEMBER_ID, COUNT(*) AS CNT
    FROM REST_REVIEW
    GROUP BY MEMBER_ID
    HAVING COUNT(*) = (
        SELECT MAX(R.CNT) AS MAX
        FROM (SELECT MEMBER_ID, COUNT(*) AS CNT
        FROM REST_REVIEW 
        GROUP BY MEMBER_ID) R
    )
) R
ON R.MEMBER_ID = M.MEMBER_ID
INNER JOIN REST_REVIEW A
ON A.MEMBER_ID = M.MEMBER_ID
ORDER BY REVIEW_DATE ASC, REVIEW_TEXT ASC
profile
일단 해보자 뭐든 되겠지 😄

0개의 댓글