Mysql数据分组排名实现的示例分析

  

Mysql数据分组排名实现的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1。数据源

 Mysql数据分组排名实现的示例分析

2。数据整体排名

1)普通排名

从1开始,按照顺序一次往下排(相同的值也是不同的排名)。

set  @rank =0;   select    city ,   分数,,   @rank :=, @rank + 1, rank    得到cs    order  by  score  desc;

结果如下:

 Mysql数据分组排名实现的示例分析

2)并列排名

相同的值是相同的排名(但是不留空位)。

set  @rank=0, @price=零;   select  c . *,,   ,case  when  @price =, score  then  @rank    ,when  @price :=, score  then  @rank :=, @rank + 1,最终获得rank ,   ,得到cs  order  by  score  desc;   ,——当查询的score 值,=,@price时,输出@rank,   ,——当不等时,将分数值赋给@price ,并输出@rank :=, @rank + 1   ,   ——,或者   set  @rank=0, @price=零;   select    a.city、a.score a.rank    得到;   (select  cs。*,   @rank :=,如果(@p=分数,@rank, @rank + 1),排名,   @p :=,得分   得到cs    order  by  score  desc),一个;

结果如下:

 Mysql数据分组排名实现的示例分析

3)并列排名

相同的值是相同的排名(但是留空位)。

set  @rank=0, @price=零,@z=1;   select    a.city、a.score a.rank    得到;   (select    cs。*,   @rank :=,如果(@p=分数,@rank, @z),排名,   @p :=,分数,@z :=@z + 1   得到cs    order  by  score  desc),一个;

结果如下:

 Mysql数据分组排名实现的示例分析

3。数据分组后组内排名

1)分组普通排名

从1开始,按照顺序一次往下排(相同的值也是不同的排名)。

set  @rank=0, @c=零;   select    cs.city cs.score,   @rank :=,如果(@c =,城市,@rank + 1, - 1),排名,   @c :=,   得到cs    order  by  cs.city cs.score;

结果如下:

 Mysql数据分组排名实现的示例分析

2)分组后并列排名

组内相同数值排名相同,不占空位。

set  @rank=0, @c=null, @=零;   select    cs.city cs.score,   @rank :=,如果(@c=城市,如果(@=分数、@rank @rank + 1), 1), rank ,   @c :=,城市,   @s :=score    得到cs    order  by  cs.city cs.score;

结果如下:

 Mysql数据分组排名实现的示例分析

3)分组后并列排名

组内相同数值排名相同,需要占空位。

set  @rank=0, @c=null, @=零;   select    cs.city cs.score,   @rank :=,如果(@c=城市,如果(@=分数、@rank @rank + 1), 1), rank ,   @c :=,城市,   @s :=score    得到cs    order  by  cs.city cs.score;

结果如下:

 Mysql数据分组排名实现的示例分析

4。分组后取各组的前两名

①方法一:按照分组排名的三种方式,然后限定排名的值

set  @rank=0, @z=0, @c=null, @=零;   select  a.city a.score a.rank 得到;   (select    cs.score  cs.city 城市;分数,   @z :=,如果(@c=城市,@z + 1, - 1),   @rank :=,如果(@c=城市,如果(@=分数,@rank @z), 1),排名,   @c :=,城市,   @s :=score    得到cs    order  by  cs.city cs.score  desc),   where  a.rank<=2,

Mysql数据分组排名实现的示例分析