데이터베이스
[DB] Rank and Partition
KyooDong
2020. 12. 6. 15:37
728x90
Ranking
2, 3, 4 등을 불러오는 Mysql Query
SELECT * FROM Professor ORDER BY salary DSEC LIMIT 3 OFFSET 1;
ORDER BY 구문을 통해 정렬을 한 뒤 OFFSET 만큼 row 를 건너뛴 다음 LIMIT 개수만큼 출력해줌
rank() 함수
MYSQL 8버전부터 지원 :
SELECT ID, RANK() over (ORDER BY gpa DESC) as sRank FROM StudentGrade ORDER BY sRank;
MYSQL 8 이전 버전:
SELECT ID (SELECT COUNT(*) FROM StudentGrade B WHERE A.gpa < B.gpa) AS sRank FROM SutdentGrade A ORDER BY sRank;
Rank : 1등이 2명일 때 다음 등수가 3임
Dense_rank : 1등이 2명일 때 다음 등수가 2임
Partition
학과별 GPA 순위를 매기는 방법 : PARTITION BY 키워드를 사용
SELECT ID, deptName, rank() over (PARTITION BY deptName ORDER BY gpa DESC) as DeptRank FROM StudentGrade ORDER BY deptName, deptRank;
-
percent_rank() : 상위 몇 %
-
cume_dist() : 누적 등수
-
ntile(n) : 전체를 N 등분하여 몇번 그룹에 속하는지