问题:获取某课程下的学习时长排行前五名的学员

1.表

表名称 用到的字段
user id,nickname
course_learn id,courseId,userId,learnId,startTime
lesson id,length

其中 course_learn.userId=user.idcourse_learn.lessonId

2.构造SQL语句

  1. 首先根据courseId 查出所有数据
select *
from course_lesson_learn cll
join user u on u.id=cll.userId
join course_lesson cl on cll.lessonId=cl.id
where cll.courseId=10
  1. 将 * 改成用到的字段
select  cll.userId,u.nickname,cll.startTime,length
from course_lesson_learn cll
join user u on u.id=cll.userId
join course_lesson cl on cll.lessonId=cl.id
where cll.courseId=10#这样查出的结果等于在原有表上的基础上得到对应的姓名和学习时长
  1. 根据用户分组,将length求和
select  cll.userId,u.nickname,cll.startTime,sum(length) as lengths
from course_lesson_learn cll
join user u on u.id=cll.userId
join course_lesson cl on cll.lessonId=cl.id
where cll.courseId=10
group by userId
#查出每个学员的总时长
  1. 根据时长length降序,startTime升序,取前5名
#最终SQL:
SELECT  cll.userId,u.nickname,cll.startTime,sum(length) as lengths
FROM course_lesson_learn cll
JOIN user u on u.id=cll.userId
JOIN course_lesson cl on cll.lessonId=cl.id
WHERE cll.courseId=10
GROUP BY userId
ORDER BY lengths desc,cll.startTime asc
LIMIT 5

3.将SQL语句转换为TP5查询构造器

Db::table('course_lesson_learn')->alias('cll')->join('user u','cll.userId=u.id')->join('course_lesson cl','cll.lessonId=cl.id')->where('cll.courseId','=',10)->field('cll.userId,u.nickname,sum(length) as lengths,cll.startTime')->group('userId')->order('lengths desc,cll.startTime asc')->limit(5)->select();

就这样吧,算结束了吧~~~

有问题请留言,滴滴滴滴

tp5之学习时长排行榜相关推荐

  1. 学生学习时长统计--python程序设计

    python程序设计课程的最后一次作业:统计学生学习时长:这是python程序设计课程的最后一次课的作业. 程序要求: 输入学生的信息,统计学生的学习时长.输入数据字段包括 :学生姓名.学号.学习时长 ...

  2. Python数据特征分析_01(MOOC学习时长分析)

    本篇博客使用到的数据如下:通过分析每个学生的学习时长来分析学生的学习稳定性. (共有115人,每个人记录了11次的学习数据) 文章目录 一.分布分析 1.定量数据分布分析 2.绘制频率图 二.对比分析 ...

  3. 2023最新互联网公司时长排行榜出炉

    作者 l 对白    出品 l 对白的算法屋 大家好! 今天给大家分享一个对于选择公司来说另一个非常重要的参考指标:"互联网时长". 我们在选择一个公司的时候,除了需要关注总收入p ...

  4. 2023最新互联网公司时长排行榜出炉!

    往期热门文章:1.弃用 Nginx 后!它成为了最受欢迎 Web 服务器... 2.计算机会成为下一个土木吗? 3.干掉Maven和Gradle!推出更强更快更牛逼的新一代构建工具,炸裂! 4.大公司 ...

  5. Java多线程模拟驾校学车——假设共有30个学员,其中20个普通学员,10个VIP学员,两类学员并行叫号练车 ,叫号要求:vip学员被叫号的概率要高,vip学习时长是普通学员的3倍数···

    假设共有30个学员,其中20个普通学员,10个VIP学员,两类学员并行叫号练车 叫号要求:vip学员被叫号的概率要高,vip学习时长是普通学员的3倍数,vip学员要在普通学员之前结束练车 packag ...

  6. Python | 逻辑回归(数据学习时长与是否通过考试)

    逻辑回归 逻辑回归里虽然带回归2字,其实其本质是分类,相当于打个标签,0或1,包括得出0或1的概率 线性回归返回的是一个数值,而不是标签,对于标签的预测,逻辑回归更合适 其中X=z=a+bx impo ...

  7. 软考中级-软件设计师-视频学习时长记录

    软考中级资源:链接: https://pan.baidu.com/s/1LCtCGTCdE_E3UwK-ZhrTBA?pwd=nqn7 提取码: nqn7 复制这段内容后打开百度网盘手机App,操作更 ...

  8. 百所学校寒假时长排行,看看你的学校排多少名~

    四六级考完了 现在大家应该都在复习期末考试吧 虽然很累???? 但是期末结束就要放假了阿???? 相信无论是高中生还是大学生 听到放假两个字 都会开心的哼起小曲儿吧???? 今天给大家整理了 2020 ...

  9. Java 视频时长计算

    计算某个文件夹下面所有wmv视频的总时长: String path = "F:\\BaiduNetdiskDownload\\Python\\尚硅谷Python项目之谷粒教育\\视频&quo ...

最新文章

  1. python语言支持函数式编程_python是函数式语言么
  2. weblogic环境搭建
  3. ab plc编程软件_AB编程软件及所有组态软件授权及安装教程包含FTViewV11
  4. hbase 和 zookeeper建立连接_我对Hbase的一些理解——HMaster与Zookeeper之间的交互机制...
  5. eclipse注释中插入当前时间
  6. 未来语音识别技术的发展趋势将会怎样
  7. Node.js异步编程~超级详细哦
  8. Maven刷新后jdk变成jre
  9. mac连接服务器出错双系统,mac使用bootcamp安装双系统遇到的问题及解决方案
  10. PyCharm的安装和破解
  11. hashcat工具的使用----再也不用担心自己的word等文件的密码忘记啦!
  12. 解决CesiumForUnreal加入CesiumSunSky并调整设置后场景仍然纯白的问题
  13. 关于路由器中设置IP与网关不在同一网段方法的问题
  14. pmp考试【5】emv期望货币价值计算
  15. 图像识别的答题卡计分
  16. 配置NetBackup 7 for oracle 10g rac
  17. 2020年十大币预测_2020年的5种技术预测
  18. python与审计底稿关系_审计到底在干什么——做底稿
  19. 蛮力法(python)
  20. 硅谷企业SaaS服务教父:如何衡量与优化SaaS企业的核心指标

热门文章

  1. html是什么的理解
  2. Flutter 在哈啰出行 B 端创新业务的实践
  3. 软件过程与项目管理(第一周作业)
  4. Embeded Jetty
  5. 多层多路径子文件夹批量解压压缩包到指定目录(以B2Z格式压缩包为例)
  6. 计算机二级Python真题(三)
  7. python爬虫并发并行下载
  8. 体验百度EasyEdge,畅快部署超多AI芯片
  9. 四川大学计算机学院孙亚男,伍前红
  10. Blockathon(北京)分享:风口之下,如何衡量区块链创业项目的价值