50个查询系列-第三个查询:查询所有同学的学号、姓名、选课数、总成绩;

查询最主要的就是确定查询的主表,和辅助表。

这个的话我们可以确认是用子查询。

主表就是我们的学生表:tblstudent可以查到学生的学号,姓名

辅助表就是成绩表,tblscore

自己写的语句如下:

SELECT  tblstudent.StuId,tblstudent.StuName,xuankeshu.kscount,kccj.countscore  FROM TBLSTUDENT ,
(
SELECT  count(tblscore.CourseId) kscount,tblscore.StuId sidd FROM tblscore GROUP BY tblscore.stuid
) xuankeshu,-- 这里查出的是学生的选课数量,以学生的学号分组
(

select  sum(tblscore.Score) countscore,tblscore.StuId siddd from tblscore Group by tblscore.stuid
) kccj -- 这里查出的是学生的总成绩,以学生的学号分组
where TBLSTUDENT.StuId=xuankeshu.sidd and TBLSTUDENT.stuid=kccj.siddd

答案的做法是:

 Select StuId,StuName,
  (Select Count(CourseId) From tblScore t1 Where t1.StuId=s1.StuId)SelCourses,
 (Select Sum(Score) From tblScore t2 Where t2.StuId=s1.StuId)  SumScore
   From tblStudent s1

三个select 直接每个查出来的都是一条数据。

时间: 2024-12-27 13:01:09

50个查询系列-第三个查询:查询所有同学的学号、姓名、选课数、总成绩;的相关文章

50个查询系列-第9个查询:查询所有课程成绩小于60分的同学的学号、姓名;

第一想法: 从分数表里面把小于60的学生id都查出来. SELECT tblstudent.StuId,tblstudent.StuName FROM tblstudent WHERE (SELECT  tblscore.Score FROM tblscore WHERE tblstudent.StuId=tblscore.StuId AND tblscore.Score<60 ) 然后报错: Subquery returns more than 1 row 是的呀. SELECT  tblsc

SQL复习三(子查询)

子查询 子查询就是嵌套查询,即select中包含这select,如果一条语句中存在着两个,或者两个以上的select,那么就是子查询语句了. 子查询出现的位置 where后,作为条件的一部分: from后,作为被查询的一条表: 当子查询出现在where 后作为条件时,还可以使用以下的关键字: any all 子查询结果集的形式: 单行单列(用于条件) 单行多列(用于条件) 多行单列(用于条件) 多行多列(用于表) 1.工资高于Allen的员工. 分析: 查询条件:工资>Allen工资,其中All

50个查询系列-第五个查询:查询没学过“叶平”老师课的同学的学号、姓名;

查询没学过"叶平"老师课的同学的学号.姓名: 我们反着来 !不是要查没上过课的同学的名字吗.我们先查上叶平的课的学生. 思路: 1.先去查叶平上的课的课程id: SELECT t1.courseid kid FROM tblcourse t1, (SELECT tblteacher.TeaId tid FROM tblteacher WHERE tblteacher.TeaName='叶平') t2 WHERE t1.teaid=t2.tid -- 查出来叶平老师上的课的课程id 结果

50个查询系列-第六个查询:查询学过“001”并且也学过编号“002”课程的同学的学号、姓名

查询学过"001"并且也学过编号"002"课程的同学的学号.姓名: 我的写法: 第一步:先查出来学过"001"并且也学过编号"002"课程的同学的学号: SELECT t11.t1sid t33id FROM (SELECT t1.StuId t1sid FROM tblscore t1 WHERE t1.CourseId='001')t11,-- 001的学生的id (SELECT t1.StuId t2sid FROM t

简单查询语句(三)

前言 对于一些原理性文章园中已有大量的文章尤其是关于索引这一块,我也是花费大量时间去学习,对于了解索引原理对于后续理解查询计划和性能调优有很大的帮助,而我们只是一些内容进行概括和总结,这一节我们开始正式步入学习SQL中简单的查询语句,简短的内容,深入的理解. 简单查询语句 所有复杂的语句都是由简单的语句组成基本都是由SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY等组成,当然还包括一些谓词等等.比如当我们要查询某表中所有数据时我们会像如下进行. SELECT

SQL总结(三)其他查询

SQL总结(三)其他查询 其他常用的SQL,在这里集合. 1.SELECT INTO 从一个表中选取数据,然后把数据插入另一个表中.常用于创建表的备份或者用于对记录进行存档. 语法: SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename IN 子句可用于向另一个数据库中拷贝表. 1)备份表信息 SELECT ID,Name INTO Students_Backup FROM Stude

[Elasticsearch] 控制相关度 (三) - 通过查询结构调整相关度以及boosting查询

本章翻译自Elasticsearch官方指南的Controlling Relevance一章. 通过查询结构调整相关度 ES提供的查询DSL是相当灵活的.你可以通过将单独的查询子句在查询层次中上下移动来让它更重要/更不重要.比如,下面的查询: quick OR brown OR red OR fox 我们可以使用一个bool查询,对所有词条一视同仁: GET /_search { "query": { "bool": { "should": [

SQL Server调优系列基础篇(子查询运算总结)

原文:SQL Server调优系列基础篇(子查询运算总结) 前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴趣的童鞋可以点击查看. 本篇我们介绍关于子查询语句的一系列内容,子查询一般是我们形成复杂查询的一些基础性操作,所以关于子查询的应用方式就非常重要. 废话少说,开始本篇的正题. 技术准备 数据库版本为SQL Server2008R2,利用微软

Nhibernate系列学习之(三) Criteria查询表达式增删改查

Criteria查询表达式: 正如我们所见,Expression对查询语句的表达式进行了封装和限制,下表列出了Expression所有的方法,以及每个方法所对应的查询表达式及其限制. Restrictions的用法: 方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge >= Restrictions.lt < Restrictions.le <= R