#计算每个用户对每个视频的观看次数,并且筛选出观看次数大于1的
WITH play AS (
SELECT
uid,
cid,
COUNT(*) as play_count
FROM
play_record_tb
GROUP BY
uid,
cid
HAVING
COUNT(*)>1
),
#计算重复观看次数
repeat_play AS (
SELECT
cid,
SUM(play_count) AS pv
FROM
play
GROUP BY
cid
),
#排序编号
pv_ranked AS (SELECT
r.cid,
r.pv,
ROW_NUMBER() OVER (ORDER BY r.pv DESC, c.release_date DESC) AS rk
FROM
repeat_play AS r
INNER JOIN
course_info_tb AS c ON r.cid=c.cid)
#输出最终结果
SELECT
cid,
pv,
rk
FROM
pv_ranked
WHERE
rk<=3
ORDER BY
rk ASC;

京公网安备 11010502036488号