select cid,
concat(pv,'.000') pv,
row_number() over(order by pv desc) rk
from (
select p.cid,release_date,
count(uid) pv
from course_info_tb c right join play_record_tb p on c.cid=p.cid
group by p.cid,p.uid,release_date
having count(p.uid)>1
order by pv desc,release_date desc
) as r
order by rk
limit 3
先在子查询中把需要的重复次数以及cid查出来,并按pv排好顺序
再在主查询中对子查询结果进行排名
应注意本来子查询就是一行一列为一组,因此在排名时应该对全部进行排名,不应再用PARTITION by进行分组排名

京公网安备 11010502036488号