SELECT a.cid,pv,rk
FROM  (
SELECT p.cid,COUNT(p.uid)*1.000 AS pv,ROW_NUMBER() OVER(ORDER BY COUNT(p.uid) DESC, c.release_date DESC ) AS rk
FROM play_record_tb AS p JOIN   course_info_tb AS c ON p.cid = c.cid
WHERE p.cid in  (
  SELECT p.cid
  FROM play_record_tb AS p JOIN   course_info_tb AS c ON p.cid = c.cid
  GROUP BY p.cid,p.uid
  HAVING COUNT(*)>=2
      )
GROUP BY p.cid,p.uid,c.release_date
HAVING COUNT(*) > 1
) AS a JOIN course_info_tb AS c ON c.cid=a.cId
ORDER BY rk LIMIT 3