今天是个好天气 logo 今天是个好天气
  • Home
  • Go
  • MySQL
  • Redis
  • LeetCode
  • Hello World
↩️README Hello MySQL SQL 写点SQL InnoDB存储引擎 索引 事务 日志 有哪些锁 MySQL如何加锁 MySQL性能如何优化

常用SQL

  • 将问题分解来思考怎么写

    • 表与表之间怎么连接的,如何关联的

牛客刷题

SQL156.各个视频的平均完播率

  • 关联用户-视频互动记录和短视频信息表:JOIN tb_video_info USING(video_id);
  • 筛选2021年的记录:WHERE YEAR(start_time)=2021
  • 按视频id分组:GROUP BY video_id
  • 计算每条播放记录是否完成播放:IF(TIMESTAMPDIFF(SECOND, start_time, end_time)>=duration, 1, 0)
  • 计算完播率,完成播放为1,未完成播放为0,取平均即为完播率AVG(),配合group计算每一组的平均值
  • 保留3位小数:ROUND(x, 3)

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

  • 关联表:JOIN tb_video_info USING(video_id);
  • 筛选进度大于60%的类别:avg_play_progress > 60
  • 按tag分组:GROUP BY tag
  • 计算一个类别的播放率
    • 判断超过duration记为1:case when timestampdiff(second,start_time,end_time)>=duration then 1
    • 否则按照实际:else timestampdiff(second,start_time,end_time)/duration end
  1. 牛客刷题
    1. SQL156.各个视频的平均完播率
    2. SQL157 平均播放进度大于60%的视频类别
Created by shixiaocaia | Powered by idoc
Think less and do more.