mysql实现分组排序

1. 代码

select a.id,count(b.id) as rank from stock_up_rate a 
left join stock_up_rate b on a.industry=b.industry 
where a.up5<=b.up5 
group by a.id

理解:使用a表中的一条记录与b表中相同的industry进行连接,查找up5比自己大的b表的个数,这个数量就是它的排名。(a,b是同一张表)

 如图举个例子,使用a表的id为1的数据用industry连接b表,会连接到b表的id为1,3的两条数据,此时a.up5<=b.up5的条件count(b.id)的结果是1,所以id为1的industry排名为1

 同理,id为3时,a.up5<=b.up5的条件count(b.id)的结果是2,所以id为3的industry排名为2

(a,b是同一张表)

 

posted @ 2022-01-27 14:08  10132714  阅读(2081)  评论(0编辑  收藏  举报