Server/MariaDB

[MariaDB] 순위 함수

클리엘 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