1.公司内部系统,统计各部门每周的学习次数
2.数据库
部门名称表,员工表,学习记录表,员工表通过depid和部门表关联(depid为空的数据,在统计时统一为未分组这一部门),学习记录表通过userID和员工表关联
3.先说说我的思路
user表左连部门表内连记录表group by 记录创建时间转化为周统计出每周的学习次数,然后再针对得到的这个数据group by depid再做一次查询,要进行内查询
4.如果数据量比较大时,性能会不会不好,怎么优化这个sql语句
1.公司内部系统,统计各部门每周的学习次数
2.数据库
部门名称表,员工表,学习记录表,员工表通过depid和部门表关联(depid为空的数据,在统计时统一为未分组这一部门),学习记录表通过userID和员工表关联
3.先说说我的思路
user表左连部门表内连记录表group by 记录创建时间转化为周统计出每周的学习次数,然后再针对得到的这个数据group by depid再做一次查询,要进行内查询
4.如果数据量比较大时,性能会不会不好,怎么优化这个sql语句
在学习记录表为什么不把员工的 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
5 回答3.3k 阅读✓ 已解决
3 回答3.7k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
5 回答1.4k 阅读
2 回答2.1k 阅读
3 回答2k 阅读
1 回答3.6k 阅读
必须要使用自查询的吧