SQL156各个视频的平均完播率
链接:SQL156各个视频的平均完播率
视频完播率 = 完成播放次数/总播放次数
首先让两个表进行内连接,条件是两个表的video_id相等,播放视频的年份是2021。之后以video_id为依据进行分组,分别获取完整播放的次数和总的播放次数。
select a.video_id ,
round(sum(if(end_time-start_time>=duration,1,0))/count(start_time),3) avg_comp_play_rate
from tb_user_video_log a inner JOIN tb_video_info b on a.video_id = b.video_id
where year(start_time)=2021
group by a.video_id
order by avg_comp_play_rate desc;
用到的函数有
year(‘2023-07-01’)用来获取日期的年份返回一个整数
round(expression,decimal_places)对expresssion进行四舍五入并保留decimal_places个小数。
if和case语句用来判断和分支
if()函数
IF(condition, value_if_true, value_if_false)
if(end_time-start_time>=duration,1,0)
case表达式
//第一种形式
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
[ELSE result]
END
//第二种形式
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
[ELSE result]
END
case when win='胜' then 1 else 0 end