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;

 

MySQL 函数大全

 

posted @ 2020-10-20 14:13  谢世林  阅读(661)  评论(0)    收藏  举报