WITH t AS (
SELECT uid,cid,COUNT(*) AS pv
FROM play_record_tb
GROUP BY uid,cid
HAVING COUNT(*)>=2
),
o AS (
SELECT t.cid,SUM(pv) AS pv,t1.release_date,
ROW_NUMBER() OVER( ORDER BY SUM(pv) DESC,t1.release_date DESC) AS rk
FROM course_info_tb t1
LEFT JOIN t ON t1.cid=t.cid
GROUP BY t.cid,t1.release_date
)
SELECT o.cid,o.pv,o.rk
FROM o
WHERE rk<=3 AND cid IS NOT NULL -- 过滤NULL的cid
AND pv IS NOT NULL -- 过滤NULL的pv

京公网安备 11010502036488号