데이터베이스

[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 등분하여 몇번 그룹에 속하는지