mysql 四大排名函式(row_number()、rank()、dense_rank()、ntile()使用簡介
阿新 • • 發佈:2020-10-20
1、row_number()
row_number在排名時序號 連續 不重複,即使遇到表中的兩個3時亦如此;
注意:在使用row_number實現分頁時需要特別注意一點,over子句中的order by 要與Sql排序記錄中的order by 保持一致,否則得到的序號可能不是連續的
SELECT row_number() over(ORDER BY candyAmount DESC) as row_mun,candyAmount from customer;
2、rank()
rank函式會把要求排序的值相同的歸為一組且每組序號一樣,排序不會連續執行
SELECTrank() over(ORDER BY candyAmount DESC) as row_mun,candyAmount from customer;
3、dense_rank()
dense_rank排序是連續的,也會把相同的值分為一組且每組排序號一樣
SELECT dense_rank() over(ORDER BY candyAmount DESC) as row_mun,candyAmount from customer;
4、ntile()
NTILE(group_num)將所有記錄分成group_num個組,每組序號一樣
SELECT ntile(300000) over(ORDER BY candyAmount DESC) as row_mun,candyAmount from customer;