题解 | #平均播放进度大于60%的视频类别#
平均播放进度大于60%的视频类别
https://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef
SELECT
tag,
CONCAT (t1.avg_play_progress, "%")
from
(
select
tag,
round(
avg(
if (
timestampdiff (second, u.start_time, u.end_time) >= v.duration,
1,
timestampdiff (SECOND, u.start_time, u.end_time) / v.duration
)
) * 100,
2
) as avg_play_progress
from
tb_user_video_log u
LEFT JOIN tb_video_info v on u.video_id = v.video_id
GROUP BY
v.tag
HAVING
avg_play_progress >60
ORDER BY
avg_play_progress desc
) t1;
#第一步:from 连接两个表,以video_id连接
#第二步:group by :按照tag进行聚合
#第二步:select:计算平均完播率,先计算每个视频的完播率,如果时长大于duration的直接赋值为1,如果小于,那么直接处于duration,最后计算每个tag的平均
#第三步:对完播率进行乘以100,保证后面的百分位数输出准确
#第四步:HAVING挑选出完播率大于60的,进行输出
#第五步:排序按照播放进度降序排序
#第六步:从上面的查询中,使用concat函数,连接两个数值类型,进行输出
