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