본문 바로가기
MySQL MariaDB/SQL 문법

MySQL/MariaDB rank 함수. 랭킹(순위) 구하기.

by 쑤- IT, MySQL, MariaDB, DBeaver 2024. 7. 15.

MySQL/MariaDB rank 함수. 랭킹(순위) 구하기.

RANK() 함수

  • 동일한 순위를 가진 값들에 대해 동일한 순위를 할당.
  • 다음 순위는 건너뛰기.  ex) 1,1,3,4,,,,

ex)  두 행이 동일한 값을 가지고 1위로 지정되면, 그 다음 행은 3위로 순위가 됨.

 

예제 1 ) sale_amount 기준으로 순위 매기기.

SELECT 
    id,
    salesperson,
    sale_item,
    sale_amount,

    RANK() OVER (ORDER BY sale_amount DESC) as rank

FROM      
    sales;

 

결과. - rank 1 : 2개.    rank 2 : 없음.    다음 rank : 3.

id | salesperson  | sale_item  | sale_amount rank
-----------------------------------------------------------------
 1   | Alice                |  item1         |   5000               |    1
 3   | Charlie           |   item1        |   5000               |    1
 4   | Alice                |  item3         |   4000               |    3
 2   | Bob                 |  item2         |   3000               |    4
 5   | Eve                  |  item2         |   3000               |    4

 

 

예제 2): 파티션 내, salesperson기준으로 순위 매기기

  • PARTITION BY 절을 사용하면 특정 열을 기준으로 데이터를 그룹화하여 각 그룹 내에서 순위를 매길 수 있습니다. ORDER BY 절은 각 파티션 내에서 순위를 매길 때 사용합니다.
  • 판매원 기준으로 데이터를 파티션화하고, 각 판매원 내에서 판매 금액 순으로 순위를 매기기.
SELECT 
    id,
    salesperson,
    sale_item,
    sale_amount,

    RANK() OVER (PARTITION BY salesperson ORDER BY sale_amount DESC) as rank

FROM      
    sales;

 

결과 - 

id | salesperson  | sale_item  | sale_amount rank
--------------------------------------
 1   | Alice                |  item1         |   5000               |    1
 4   | Alice                item3         |   4000               |    2

 3   | Charlie           |   item1        |   5000               |    1
 2   | Bob                 |   item2        |   3000               |    1
 5   | Eve                  |   item2        |   3000               |    1

 

 

DENSE_RANK() 함수

  • 동일한  값들에 대해 동일한 순위를 할당.
  • 다음 순위는생략되지 않고, 순서대로 매김  ex) 1,1,2,3
 

MySQL/MariaDB dense_rank 함수. 랭킹(순위) 구하기.

MySQL/MariaDB dense_rank 함수. 랭킹(순위) 구하기.DENSE_RANK() 함수동일한 순위를 가진 값들에 대해 동일한 순위를 할당.다음 순위는 생략되지 않고, 순서대로 매깁니다. ex)  두 행이 동일한 값을 가

soo02.tistory.com

 

ROW_NUMBER():함수

  • 동일한  값들에 대해서도  각 행에 고유한 순위 번호를 부여
 

MySQL/MariaDB row_number 함수. 랭킹(순위) 구하기.

MySQL/MariaDB row_number 함수. 랭킹(순위) 구하기. ROW_NUMBER():함수동일한  값들에 대해서도  각 행에 고유한 순위 번호를 부여예제  ) sale_amount 기준으로 순위 매기기.SELECT      id,     sales

soo02.tistory.com

댓글