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是同一张表)