-
子查询优化问题30
学习记录表record
userid courseid departmentID(部门ID) coursetype(课程类型 1-必修 2-选修) studyType(学习方式1-上级安排2-自发) score(获得学分)
1 1 1 1 1 1
2 2 1 2 1 1
3 3 2 1 1 1
4 4 2 1 2 1
部门表department,学员信息表userinfos
统计各部门学习情况,要求报表样式如下
部门名称 部门人数 上级安排必修课获得学分 上级安排选修课获得学分 自发学习必修课获得学分 自发学习选修课获得学分
1 2 1 1 1 1
2 2 1 1 1 1
我写的sql是这样的
select d.name 部门名称,
(select count(distinct u.userid) from userinfos u where u.departmentID = d.departmentID)部门人数,
(select sum(r.score) from record where r.departmentID = d.departmentID and r.studyType=1 and r.coursetype=1)上级安排必修课获得学分
(select sum(r.score) from record where r.departmentID = d.departmentID and r.studyType=1 and r.coursetype=2)上级安排选修课获得学分
(select sum(r.score) from record where r.departmentID = d.departmentID and r.studyType=2 and r.coursetype=1)自发学习必修课获得学分
(select sum(r.score) from record where r.departmentID = d.departmentID and r.studyType=2 and r.coursetype=2)自发学习选修课获得学分
from department d group by d.departmentID
请问改成连接查询如何实现2010年3月05日 11:26
2个答案 按时间排序 按投票排序
-
select s.departmentid, count(s.userid) as 部门人数, sum ( decode (s.coursetype,1,s.上级安排,0)) as 上级安排必修 ,sum ( decode (s.coursetype,2,s.上级安排,0)) as 上级安排选修,sum ( decode (s.coursetype,1,s.自主学习,0)) as 自主学习必修,sum ( decode (s.coursetype,2,s.自主学习,0)) as 自主学习选修 from(select r.departmentid,r.userid,r.coursetype, sum ( decode (r.studyType,1,r.score,0))as 上级安排 ,sum ( decode ( r.studyType,2,r.score,0))as 自主学习
from myrecord r group by r.departmentid,r.userid,r.coursetype) s group by s.departmentid2010年3月05日 16:43
相关推荐
从实践看,MySQL的子查询优化技术的内容和范围,明确掌握子查询优化手段 预计时间2小时,每小时一个课程段(子查询是SQL查询优化的重点内容,务必掌握好) 第5课 查询优化技术理论与MySQL实践(三)------视图重写...
Oracle子查询优化的最佳实践.pptx
主要介绍了Oracle数据库中基本的查询优化与子查询优化讲解,举了实例来分析子查询对性能的影响,需要的朋友可以参考下
1. 案例 取所有不为掌门人的员工,按年龄分组!...此时,再次查询: ②进一步优化,替换not in。 上述SQL可以替换为: select age as '年龄',count(*) as '人数' from emp e left join dept d on e.id=d.c
本文通过实例向大家介绍了MYSQL子查询和嵌套查询优化的相关内容,附代码示例,具有一定参考价值。希望对大家使用MySQL有所帮助。
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS)支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图...现在用户越来越多,对于SQL查询的优化可参考本文。
使用连接(JOIN)来代替子查询(Sub-Queries) MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中...
本文实例讲述了mysql关联子查询的一种优化方法。分享给大家供大家参考,具体如下: 很多时候,在mysql上实现的子查询的性能较差,这听起来实在有点难过。特别有时候,用到IN()子查询语句时,对于上了某种数量级的表...
本文介绍了数据库中常用的子查询和连表查询两种查询方式,并通过使用explain命令分析了它们的执行计划和效率。...适用于数据库开发人员和DBA等人群,内容关键词包括子查询、连表查询、效率比较、优化等。
主要介绍了Mysql数据库性能优化之子查询的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
在查询优化模块,介绍了查询优化预处理技术和子查询提升技术,接着详细讨论了存取路径的选择和路径代价的估算方法。最后对测试结果进行了分析,结果表明优化后的系统查询效率比原系统有了显著提高。
在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该经验移植到mysql数据库上,但是不幸的是,mysql在子查询的处理上有可能会让你大失所望,在我们的生产系统上就由于碰到了这个问题: ...
Kingbase ES数据库系统子查询和GroupBy操作优化技术研究
mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,你可以点击这里 ,这里来获得一些信息,mysql在处理子查询的时候,会将子查询改写,通常情况下,我们希望由内到...
本文深入探讨了MySQL查询优化的多种策略和技巧,旨在帮助数据库管理员和开发人员提升MySQL数据库的性能。首先,介绍了使用EXPLAIN命令分析查询执行计划的重要性,以便识别潜在的性能瓶颈。接着,详细阐述了索引优化...
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): (2) WHERE子句中的连接顺序.: (3) SELECT子句中避免使用 ‘ * ‘: (4) 减少访问数据库的次数: (5) 在SQL*Plus , SQL*Forms和Pro*C中重新...