본문 바로가기
SQL

그룹별 조건에 맞는 식당 목록 출력하기 - 프로그래머스

by hoshi03 2024. 12. 3.

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

• 풀이 

조인된 테이블에서 가장 많이 리뷰를 작성한 사람을 찾아서 가져오는 문제

 

1. 리뷰 가장 많이 한 사람이 리뷰 몇번이나 했는지를 찾기

SELECT MAX(COUNT(1)) 
FROM REST_REVIEW 
GROUP BY MEMBER_ID

 

2.  해당 횟수만큼 리뷰한 멤버아이디들을 조회하기

    SELECT MEMBER_ID 
    FROM REST_REVIEW 
    GROUP BY MEMBER_ID 
    HAVING COUNT(1) = (SELECT MAX(COUNT(1)) 
                       FROM REST_REVIEW 
                       GROUP BY MEMBER_ID)
   )

 

3. 테이블을 조인하고 WHERE절 서브쿼리로 멤버아이디가 2번에서 뽑은 아이디와 일치하면 정렬해서 가져오기

SELECT MEMBER_NAME, REVIEW_TEXT, TO_CHAR(REVIEW_DATE,'YYYY-MM-DD') REVIEW_DATE
FROM MEMBER_PROFILE M JOIN REST_REVIEW R ON M.MEMBER_ID = R.MEMBER_ID
WHERE M.MEMBER_ID 
IN (SELECT MEMBER_ID 
    FROM REST_REVIEW 
    GROUP BY MEMBER_ID 
    HAVING COUNT(1) = (SELECT MAX(COUNT(1)) 
                       FROM REST_REVIEW 
                       GROUP BY MEMBER_ID)
   )
 ORDER BY REVIEW_DATE, REVIEW_TEXT

 

결과만 나오면 OK인 쿼리처럼 되었지만 더 나은 방법이 생각나지 않아서 위의