统计各部门每天的学习次数

1.公司内部系统,统计各部门每周的学习次数
2.数据库
部门名称表,员工表,学习记录表,员工表通过depid和部门表关联(depid为空的数据,在统计时统一为未分组这一部门),学习记录表通过userID和员工表关联
3.先说说我的思路
user表左连部门表内连记录表group by 记录创建时间转化为周统计出每周的学习次数,然后再针对得到的这个数据group by depid再做一次查询,要进行内查询
4.如果数据量比较大时,性能会不会不好,怎么优化这个sql语句

阅读 5.1k
3 个回答

必须要使用自查询的吧

在学习记录表为什么不把员工的 depid冗余过去?
用子查询一般都会用到临时表.
select SUM(1) as total, e.depid from 学习记录表 s left join 员工表 e ON s.userID=s.userID group by e.depid

select count(学习表.id) count, 部门表.name depName 
    from 学习表 
    left join 员工表 on 学习表.userId = 员工表.id 
    left join 部门表 on 员工表.depId = 部门表.id 
    group by 员工表.depid 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题