1. 程式人生 > 實用技巧 >mysql 四大排名函式(row_number()、rank()、dense_rank()、ntile()使用簡介

mysql 四大排名函式(row_number()、rank()、dense_rank()、ntile()使用簡介

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函式會把要求排序的值相同的歸為一組且每組序號一樣,排序不會連續執行

  SELECT
rank() 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;