Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

데이터 분석

프로그래머스 - 그룹별 조건에 맞는 식당 목록 출력하기 (RANK, 서브쿼리) 본문

SQL/프로그래머스 코딩

프로그래머스 - 그룹별 조건에 맞는 식당 목록 출력하기 (RANK, 서브쿼리)

시니조 2023. 2. 28. 15:00
  • RANK
  • 서브쿼리

 

그룹별 조건에 맞는 식당 목록 출력하기

WHERE절에 서브쿼리를 사용하는 경우

 

  • 이 서브쿼리의 결과가 1건 나오면 단일행으로  =, >, < 등을 메인쿼리와 연동한다.
  • 이 서브쿼리 결과가 2건 이상 나오면 다중행으로 IN, ALL, ANY등으로 메인쿼리와 연동한다.

 

RANK

WINDOW 함수중 중 하나로 전체 테이블 중 내가 원하는 일부만 작은 테이블로 만들어 분석하는 과정이다.

 

RANK() OVER (PARTITION BY 컬럼 ORDER BY 컬럼)

PARTITION BY 는 분할 할 행 지정

ORDER BY 는 순위를 지정할 값

 

 

 

내가 푼 답

SELECT PRO.MEMBER_NAME, RE.REVIEW_TEXT, TO_CHAR(RE.REVIEW_DATE, 'YYYY-MM-DD') REVIEW_DATE
FROM MEMBER_PROFILE PRO JOIN REST_REVIEW RE
ON PRO.MEMBER_ID = RE.MEMBER_ID
WHERE PRO.MEMBER_ID IN (
    SELECT MEMBER_ID
    FROM (
        SELECT MEMBER_ID, COUNT(*), RANK() OVER(ORDER BY COUNT(*) DESC) AS RANK 
        FROM REST_REVIEW
        GROUP BY MEMBER_ID
        ORDER BY COUNT(*) DESC
       )
    WHERE RANK = 1
    )
ORDER BY REVIEW_DATE ASC, REVIEW_TEXT ASC
;

 

 

풀이

7~10번째 줄 서브쿼리 내용만 보면

 

MEMBER_ID별로 개수를 세서 RANK를 이용하여 등수를 매겼다.

 

 

 

 

 

 

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

 

프로그래머스

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

programmers.co.kr