SQL大神带你飞 | 24春招京东SQL真题解析-最受欢迎的top3课程

最受欢迎的top3课程

https://www.nowcoder.com/practice/b9b33659559c46099aa3257da0374a48

最近做了京东的24年春招题,题目如下: alt

题目分析

在这道题目中,我们需要从两个表中提取数据:course_info_tbplay_record_tb。以下是每个表的结构及字段的汉语意思:

  1. course_info_tb(课程信息表)

    • cid:课程ID
    • release_date:课程发布日期
  2. play_record_tb(播放记录表)

    • cid:课程ID
    • start_time:播放开始时间
    • end_time:播放结束时间
    • score:评分

目标:找出发布后一周内播放次数多且平均评分不低于3的课程,按播放时长降序排列,输出前三名。

输出要求:输出课程ID、播放次数、播放总时长,按播放总时长降序排列,限制输出前三名。

知识点关键词:SQL连接、时间差计算、分组、聚合函数、排序、限制输出

解答步骤

  1. 连接表

    我们需要将 course_info_tb 表和 play_record_tb 表连接在一起,以便获取每个播放记录的课程信息。使用 JOIN 语句通过 cid 字段连接两个表。

    from course_info_tb c 
    join play_record_tb p on p.cid = c.cid
    
  2. 过滤条件

    使用 WHERE 子句过滤出在课程发布后一周内的播放记录。通过 TIMESTAMPDIFF 函数计算 release_datestart_time 之间的天数差。

    where 
    timestampdiff(day, c.release_date, date_format(p.start_time, '%Y-%m-%d')) <= 7
    
  3. 计算播放次数和总时长

    使用 COUNT(*) 计算播放次数,使用 SUMTIMESTAMPDIFF 计算播放总时长(以分钟为单位)。

    count(*) as pv,
    sum(timestampdiff(minute, p.start_time, p.end_time)) as time_len
    
  4. 分组和过滤

    使用 GROUP BY 语句按课程ID分组,并使用 HAVING 子句过滤出平均评分不低于3的课程。

    group by p.cid
    having avg(p.score) >= 3
    
  5. 排序和限制输出

    使用 ORDER BY 语句按播放总时长降序排列结果,并使用 LIMIT 限制输出前三名。

    order by time_len desc
    limit 3
    

完整代码

select p.cid,
count(*) as pv,
sum(timestampdiff(minute, p.start_time, p.end_time)) as time_len
from course_info_tb c 
join play_record_tb p on p.cid = c.cid
where 
    timestampdiff(day, c.release_date, date_format(p.start_time, '%Y-%m-%d')) <= 7
group by p.cid
having avg(p.score) >= 3
order by time_len desc
limit 3

近似题目练习推荐

每个月Top3的周杰伦歌曲

  • 知识点:SQL连接、分组、排序、窗口函数

最长连续登录天数

  • 知识点:时间差计算、窗口函数、分组、排序

获取指定客户每月的消费额

  • 知识点:SQL连接、聚合函数、分组、日期函数
全部评论

相关推荐

已oc&nbsp;云智断更了好几天,也有一些话想说,继续更新一篇云智timeline&nbsp;4.18&nbsp;一面&nbsp;半个小时后约二面&nbsp;4.21二面&nbsp;当晚&nbsp;约hr面&nbsp;4.23hr面&nbsp;4.30&nbsp;发offer之前美团的二面挂了,进入人才库,后面又被捞起来面试,4.30号&nbsp;美团又一面,现在还没出一面结果感觉也不报什么希望,就算一面过了,还有二面,我经不起深入拷打,唉,真的,好难五一躺平了五天,吃吃玩玩睡睡~还要担心毕业,科研更是难,唉暑期可能就到此为止了,后面没有时间在这个上面了,要抓紧时间做科研,为了后面能出去实习。大厂,秋招再见!!!有一些感慨:4.1是我的第一次面试,美团,面试的时候紧张到浑身发...
daisy9542:我今晚也是美团一面,已经第六次了。我也面了其他的,没拿到 offer。但我想开了,要按照自己的节奏来,找暑期转正然后秋招大杀四方并不是唯一的出路,其实还有很多选择的,有 0 实习最后秋招拿 offer 了,也有不选择互联网去国企的外企的,考编的,创业的。现在的失败不代表以后的路都是黑暗的,只不过可能运气还没降临到头上。所以现在要做的,就是放平心态,提升自己,通过面试了解到自己的优点和不足,争取下次机会来了能好好抓住
点赞 评论 收藏
分享
抱抱碍事梨a:三点建议,第一点是建议再做一个项目,把自我介绍部分顶了,第二点是中南大学加黑加粗,第三点是建议加v详细交流
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务