상세 컨텐츠

본문 제목

[MariaDB] 순위 함수

Server/MariaDB

by 클리엘 클리엘 2021. 7. 23. 14:06

본문

728x90

1. row_number()

 

row별로 순차적으로 번호를 부여합니다. 아래 예제는 tb_purchasebill 테이블에서 BillNo 순서대로 번호를 부여하여 표시하도록 합니다.

select row_number () over(order by BillNo asc) as number, BusinessName 
from tb_purchasebill tp;

전체적인 순서가 아닌 그룹별로 순서를 표시하고자 한다면 partition을 사용해야 합니다. 따라서 다음 쿼리는 BusinessName별로 각각 순번을 부여하게 됩니다.

select row_number () over(partition by tp.BusinessName order by tp.BillNo asc) as number, tp.BusinessName 
from tb_purchasebill tp;

2. dense_rank()

 

등수를 부여합니다.

select dense_rank () over(order by SupplyPrice desc) as '매입순위', tp.BusinessName
from tb_purchasebill tp ;

위 예제는 SupplyPrice값이 많은 순서대로 등수를 부여해 표시하도록 합니다.

 

3. rank()

 

dense_rank()는 같은 순위가 나오면 다음 순위를 순서대로 부여하지만 rank()는 같은 순위가 나오면 나온 수만큼 넘긴 후 순위를 표시합니다.

select rank () over(order by SupplyPrice desc) as '매입순위', tp.BusinessName
from tb_purchasebill tp ;

4. ntile()

 

전체적인 순위를 제한합니다. 따라서 다음 예제는 전체 순위를 1과 2로면 표시하게 됩니다.

select ntile(2) over(order by SupplyPrice desc) as '매입순위', tp.BusinessName
from tb_purchasebill tp ;
728x90

'Server > MariaDB' 카테고리의 다른 글

[MariaDB] 분석 함수  (0) 2021.07.23
[MariaDB] 순위 함수  (0) 2021.07.23
[MariaDB] 시스템 함수  (0) 2021.07.23
[MariaDB] 날짜/시간 함수  (0) 2021.07.23
[MariaDB] 수학 함수  (0) 2021.07.22
[MariaDB] 문자열 함수  (0) 2021.07.22

관련글 더보기

댓글 영역