前言
昆特牌狗都不玩!
lor真好玩!!
cpdr就是垃圾!!!
题目来源于牛客网sql企业题库第2题:
平均播放进度大于60%的视频类别
问题:
代码如下:
存在的问题主要是如何得到两个时间的相差的秒数:
表中字段数据类型为:
如果直接两个数相减会出现错误
这里使用函数(针对数据类型是datetime):
UNIX_TIMESTAMP(date1,date2):可以得到date1和date2相差的秒数
解法如下:
select
tag,concat(round(sum(play_progress)/count(*),2),'%') avg_play_progess
from
(
select
t2.tag,
if((UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time))/duration*100>100,
100,(UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time))/duration*100) play_progress
from
tb_user_video_log t1
join
tb_video_info t2
on
t1.video_id=t2.video_id
) t3
group by
tag
having
round(sum(play_progress)/count(*),2)>60
order by
avg_play_progess desc
easy ~~