题解 | #平均播放进度大于60%的视频类别#
平均播放进度大于60%的视频类别
http://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef
题目难点是:
1:要求输出带有%的格式,但是直接用avg输出是小数的格式。
2:如果我们用concat做连接变成%的话,我们最后还要求输出大于60%的数据,但是连接过的字符无法与60%进行直接比较
我们为了解决上面的问题,可以先筛选出来所有大于60%的数据,然后再select一次,对这些数据进行concat连接。
或者在having的时候再使用一次AVG(TIMESTAMPDIFF......)这一块大于60%。
SELECT tag,concat(avg_1,'%') avg_play_progress
FROM
(SELECT tag,round(AVG(if((TIMESTAMPDIFF(second,start_time,end_time)/duration)>1,1,(TIMESTAMPDIFF(second,start_time,end_time)/duration)))*100,2)
AS avg_1
FROM tb_user_video_log JOIN tb_video_info USING(video_id)
GROUP BY tag
HAVING avg_1 > 60) t1
ORDER BY avg_play_progress desc