题解 | 被重复观看次数最多的3个视频

SELECT b.cid, pv, ROW_NUMBER() OVER(ORDER BY pv DESC, release_date DESC) AS rk
FROM(SELECT DISTINCT a.cid, ROUND(MAX(rc) OVER(PARTITION BY a.cid)*1.0,3) AS pv
     FROM (SELECT cid, uid, COUNT(id) AS rc
           FROM play_record_tb
           GROUP BY cid, uid
           ) a
    ) b
LEFT JOIN course_info_tb cit ON b.cid = cit.cid
ORDER BY rk
LIMIT 3;

注:

  1. 先数播放次数,再保留最大的,再对所有播放次数排序→两层子查询
  2. 排序函数可以按照两个字段排序→ROW_NUMBER() OVER(ORDER BY pv DESC, release_date DESC) AS rk
  3. 整数型数值如何通过ROUND转换成带小数点的→ROUND(MAX(rc) OVER(PARTITION BY a.cid)*1.0,3) AS pv

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 14:00
不想多说了,什么逆天HR,还要教我礼貌😂
机械打工仔:这不纯傻卵吗,他还操心上别人老板了
投递BOSS直聘等公司7个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 13:54
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务