WITH t1 AS (
    SELECT
    uid,
    cid,
    count(*) pv
    FROM play_record_tb 
    GROUP BY uid, cid
    HAVING count(*) > 1)

SELECT
t1.cid as cid,
format(t1.pv,3) as pv,
row_number() OVER(order by t1.pv DESC, release_date DESC) as rk
FROM course_info_tb c JOIN t1 USING(cid)
ORDER BY rk
LIMIT 3