0 0

子查询优化问题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个答案 按时间排序 按投票排序

0 0

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.departmentid

2010年3月05日 16:43
0 0

可以用子查询啊按部门再关联起来

2010年3月05日 15:31

相关推荐

    MySQL数据库查询优化

    从实践看,MySQL的子查询优化技术的内容和范围,明确掌握子查询优化手段 预计时间2小时,每小时一个课程段(子查询是SQL查询优化的重点内容,务必掌握好) 第5课 查询优化技术理论与MySQL实践(三)------视图重写...

    Oracle子查询优化的最佳实践.pptx

    Oracle子查询优化的最佳实践.pptx

    Oracle数据库中基本的查询优化与子查询优化讲解

    主要介绍了Oracle数据库中基本的查询优化与子查询优化讲解,举了实例来分析子查询对性能的影响,需要的朋友可以参考下

    数据库查询优化之子查询优化

    1. 案例 取所有不为掌门人的员工,按年龄分组!...此时,再次查询: ②进一步优化,替换not in。 上述SQL可以替换为: select age as '年龄',count(*) as '人数' from emp e left join dept d on e.id=d.c

    MYSQL子查询和嵌套查询优化实例解析

    本文通过实例向大家介绍了MYSQL子查询和嵌套查询优化的相关内容,附代码示例,具有一定参考价值。希望对大家使用MySQL有所帮助。

    PostgreSQL查询优化.pdf

    PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS)支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图...现在用户越来越多,对于SQL查询的优化可参考本文。

    MySQL优化之使用连接(join)代替子查询

    使用连接(JOIN)来代替子查询(Sub-Queries) MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中...

    mysql关联子查询的一种优化方法分析

    本文实例讲述了mysql关联子查询的一种优化方法。分享给大家供大家参考,具体如下: 很多时候,在mysql上实现的子查询的性能较差,这听起来实在有点难过。特别有时候,用到IN()子查询语句时,对于上了某种数量级的表...

    mysql子查询与连表查询的效率比较及优化

    本文介绍了数据库中常用的子查询和连表查询两种查询方式,并通过使用explain命令分析了它们的执行计划和效率。...适用于数据库开发人员和DBA等人群,内容关键词包括子查询、连表查询、效率比较、优化等。

    Mysql数据库性能优化之子查询

    主要介绍了Mysql数据库性能优化之子查询的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    论文研究-OSCAR查询优化器的设计与实现.pdf

    在查询优化模块,介绍了查询优化预处理技术和子查询提升技术,接着详细讨论了存取路径的选择和路径代价的估算方法。最后对测试结果进行了分析,结果表明优化后的系统查询效率比原系统有了显著提高。

    对MySQL子查询的简单改写优化

    在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该经验移植到mysql数据库上,但是不幸的是,mysql在子查询的处理上有可能会让你大失所望,在我们的生产系统上就由于碰到了这个问题: ...

    Kingbase ES数据库系统子查询和GroupBy操作优化技术研究.doc

    Kingbase ES数据库系统子查询和GroupBy操作优化技术研究

    浅谈MySQL中的子查询优化技巧

    mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,你可以点击这里 ,这里来获得一些信息,mysql在处理子查询的时候,会将子查询改写,通常情况下,我们希望由内到...

    Mysql查询优化详解(含示例)

    本文深入探讨了MySQL查询优化的多种策略和技巧,旨在帮助数据库管理员和开发人员提升MySQL数据库的性能。首先,介绍了使用EXPLAIN命令分析查询执行计划的重要性,以便识别潜在的性能瓶颈。接着,详细阐述了索引优化...

    sql语句的优化方法

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): (2) WHERE子句中的连接顺序.: (3) SELECT子句中避免使用 ‘ * ‘: (4) 减少访问数据库的次数: (5) 在SQL*Plus , SQL*Forms和Pro*C中重新...

Global site tag (gtag.js) - Google Analytics