본문 바로가기

SQL

[MYSQL] WITH, RANK, PARTITION BY

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

 

프로그래머스

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

programmers.co.kr

 

WITH TBL AS(
    SELECT FOOD_TYPE,REST_ID,REST_NAME,FAVORITES,
    RANK() OVER(PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) AS RK
    FROM REST_INFO
)
SELECT FOOD_TYPE,REST_ID,REST_NAME,FAVORITES
FROM TBL
WHERE RK = 1
ORDER BY FOOD_TYPE DESC

 

RANK() OVER(ORDER BY attr DESC/ASC) AS attr_name

attr의 값으로 순서를 매겨 attr_name이라는 새로운 열을 생성.

 

RANK() OVER(PARTITION BY group_attr ORDER BY attr DESC/ASC) AS attr_name

이 때, 위처럼 partition by를 사용해 그룹화도 가능

'SQL' 카테고리의 다른 글

[MYSQL] 3개의 테이블 JOIN  (0) 2024.08.04
[MYSQL] PERCENT_RANK()  (0) 2024.08.04
[MYSQL] 최댓값, CONCAT  (0) 2024.07.29
[MYSQL] GROUOP BY에 사용되는 열의 조건  (0) 2024.07.29
[MYSQL] OR  (0) 2024.07.29