题解 | #近一个月发布的视频中热度最高的top3视频#

近一个月发布的视频中热度最高的top3视频

https://www.nowcoder.com/practice/0226c7b2541c41e59c3b8aec588b09ff

不应该是LEFT JOIN 是JOIN

计算完播次数时是>=duration

WITH t AS (SELECT
b.video_id,
COUNT(IF(TIMESTAMPDIFF(SECOND,b.start_time,b.end_time) >= a.duration ,1,NULL))/COUNT(*) AS finish_rate,
SUM(if_like) AS likes,
COUNT(comment_id) AS comments,
SUM(if_retweet) AS retweet,
1/(DATEDIFF((SELECT MAX(DATE(end_time)) FROM tb_user_video_log),MAX(end_time))+1) AS fresh
FROM tb_video_info a
JOIN tb_user_video_log b USING(video_id)
WHERE DATE(release_time) BETWEEN DATE_SUB((SELECT MAX(DATE(end_time)) FROM tb_user_video_log),INTERVAL 29 DAY) AND (SELECT MAX(DATE(end_time)) FROM tb_user_video_log)
GROUP BY b.video_id)

SELECT
video_id,
ROUND((100*finish_rate+5*likes+3*comments+2*retweet)*fresh) AS hot_index
FROM t
ORDER BY hot_index DESC
LIMIT 3;

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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