https://school.programmers.co.kr/learn/courses/30/lessons/131124
• 풀이
조인된 테이블에서 가장 많이 리뷰를 작성한 사람을 찾아서 가져오는 문제
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인 쿼리처럼 되었지만 더 나은 방법이 생각나지 않아서 위의
'SQL' 카테고리의 다른 글
자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 - 조인 (0) | 2024.12.09 |
---|---|
상품을 구매한 회원 비율 구하기 - 플머 (0) | 2024.12.04 |
오프라인/온라인 판매 데이터 통합하기 (0) | 2024.11.22 |
조건에 맞는 회원수 구하기(DATE 문자열 변환) (0) | 2024.11.19 |
상위 N개 레코드(N개 출력 - ROWNUM, FROM 절 서브쿼리) (1) | 2024.11.19 |