카테고리 없음

[프로그래머스] 업그레이드 할 수 없는 아이템 구하기 (Oracle)

garamdev 2026. 9. 7.
728x90

문제

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

 

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

알고리즘 문제 연습 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트 소식을 가장 먼저 알려

school.programmers.co.kr

 

SELECT
    MP.MEMBER_NAME,              -- 회원 이름
    RR.REVIEW_TEXT,              -- 리뷰 내용
    TO_CHAR(RR.REVIEW_DATE, 'YYYY-MM-DD') AS REVIEW_DATE    -- 리뷰 작성일 (문자열 변환)
FROM
    MEMBER_PROFILE MP
    JOIN REST_REVIEW RR ON MP.MEMBER_ID = RR.MEMBER_ID      -- 회원ID로 두 테이블 연결
WHERE
    MP.MEMBER_ID = (
        SELECT MEMBER_ID
        FROM REST_REVIEW
        GROUP BY MEMBER_ID
        ORDER BY COUNT(*) DESC
        FETCH FIRST 1 ROW ONLY   -- 리뷰를 가장 많이 쓴 단 1명의 회원 ID
    )
ORDER BY
    RR.REVIEW_DATE,
    RR.REVIEW_TEXT;

주어진 테이블에는 공동 1등이 여러 명인데 처리 조건이 없어서 헷갈렸음

상기 쿼리로 정답 처리되지만,  리뷰를 가장 많이 작성한 회원이 여러 명일 때 전부 출력하려면 `WITH TIES` 사용

...
WHERE
    MP.MEMBER_ID IN (
        SELECT MEMBER_ID
        FROM REST_REVIEW
        GROUP BY MEMBER_ID
        ORDER BY COUNT(*) DESC
        FETCH FIRST 1 ROW WITH TIES
    )
...