题解 | #平均播放进度大于60%的视频类别#

平均播放进度大于60%的视频类别

https://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef

SELECT vi.tag, CONCAT(ROUND(AVG(IF((TIMESTAMPDIFF(second, uv.start_time, uv.end_time) / vi.duration) >= 1, 1, TIMESTAMPDIFF(second, uv.start_time, uv.end_time) / vi.duration)) * 100, 2), '%') AS avg_play_progress
FROM tb_user_video_log AS uv LEFT OUTER JOIN tb_video_info AS vi
ON uv.video_id = vi.video_id
GROUP BY vi.tag
HAVING  SUBSTRING_INDEX(AVG_play_progress,'%',1)>60
ORDER BY avg_play_progress DESC;

时间差

DATEDIFF(date1 , date2)计算日期差

TIMESTAMPDIFF(day/hour/second....., 小时间, 大时间) 计算时间差

保留特定位小数-ROUND(字段,保留的小数位数)

ROUND不能对%保留小数,故要输出百分数应使用CONCAT(字段,’%’)连接

提取指定字符串

SUBSTRING_INDEX函数用于从字符串中提取子字符串。它的第一个参数是要操作的字符串,第二个参数是分隔符,第三个参数是返回第几部分(从1开始计数)。如果第三个参数是正数,SUBSTRING_INDEX将返回分隔符前指定部分的子字符串;如果是负数,则返回分隔符后指定部分的子字符串。

!注意!要对聚合后的结果进行筛选用HAVING而不能用WHERE(经常忘记)。

#SQL学习打卡#
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务