有一個(gè)表test,有a和b兩個(gè)整形字段,有一些記錄公壤。
row_num
排序時(shí)遇到相同的值時(shí),序號(hào)不同且序號(hào)是連續(xù)的
select row_number() OVER(order by a desc) as row_num , a
from test
在使用row_number實(shí)現(xiàn)分頁時(shí)需要特別注意一點(diǎn),over子句中的order by 要與Sql排序記錄中的order by 保持一致,否則得到的序號(hào)可能不是連續(xù)的
rank
排序時(shí)遇到相同的值贝室,相同值的部分序號(hào)相同,但是之后的序號(hào)會(huì)不連續(xù),如1 2 2 2 2 5
select rank() OVER(order by a desc) as row_num , a
from test
dense_rank
排序時(shí)遇到相同的值仿吞,相同值的部分序號(hào)相同滑频,之后的序號(hào)是連續(xù)的,如1 2 2 2 2 3
select dense_rank() OVER(order by a desc) as row_num , a
from test
ntile
排序時(shí)將記錄分成指定組,組中記錄序號(hào)相同唤冈,不同組序號(hào)不同且連續(xù)
如 1 1 1 2 2 2
select NTILE(2) OVER(order by a desc) as row_num , a
from test