1. 在表中插入符合主键
[sql] 
/*成绩表*/ 
CREATE TABLE SC  
(  
Sid INT REFERENCES Student(Sid), /*学生学号*/ 
Cid INT REFERENCES Course(Cid), /*课程编号*/ 
Score INT NOT NULL, /*课程分数*/ 
PRIMARY KEY(Sid,Cid) /*将学生学号和课程编号设为复合主键*/ 
)  
 
2. 查询各科成绩最高分,最低分以及平均分
[sql] 
SELECT c.Cname, MAX(s.Score) AS Max, MIN(s.Score) AS Min, AVG(s.Score) AS Average   
FROM Course c JOIN SC s ON c.Cid = s.Cid   
GROUP BY c.Cname   
/*此处应注意,若不按照c.Cname进行分组,SQL语句会报错,c.Cname在SELECT语句中不合法,因为它  
并未出现在聚合函数中也没有出现在GROUP BY语句中*/ 
 
 
3. 查询平均成绩大于80分的学生姓名以及平均成绩
[sql] 
SELECT Sname, AVG(Score) AS Average FROM Student JOIN SC   
ON Student.Sid=SC.Sid   
GROUP BY Sname  
HAVING AVG(Score)>80   
/*以聚合函数为条件进行删选只能在HAVING语句中进行,WHERE语句不支持聚合函数*/ 
 
 
4. 查询各学生都选了多少门课
[sql] 
SELECT Sname, COUNT(Cid) AS TOTAL_COURSE FROM Student   
LEFT JOIN SC ON Student.Sid=SC.Sid  
GROUP BY Sname  
/*使用LEFT JOIN可以将一门课也没有选的学生也查询出来,  
若不加LEFT查不出DAISY和SHERRY*/ 
 
 
5. 查询没有选JANE老师课的学生信息
[sql] 
SELECT s.Sid,s.Sname,s.Sage,s.Sage FROM Student s   
WHERE s.Sid NOT IN  
(SELECT s.Sid FROM SC s JOIN Course c ON s.Cid=c.Cid   
JOIN Teacher t ON c.Tid=t.Tid   
WHERE t.Tname='JANE')  
/*子查询中查询出所有选择JANE老师课的学生学号,  
主查询去查询在学生表中但不在子查询结果集中的学生信息*/ 
 
 
6. 查询既选择了COMPUTER课程,又选择了MATH课程的学生信息
[sql] 
SELECT s.Sid,s.Sname,s.Sage,s.Ssex FROM STUDENT s   
JOIN SC ss ON s.Sid=ss.Sid  
JOIN Course c ON ss.Cid=c.Cid WHERE c.Cname='COMPUTER' 
INTERSECT 
SELECT s.Sid,s.Sname,s.Sage,s.Ssex FROM STUDENT s   
JOIN SC ss ON s.Sid=ss.Sid  
JOIN Course c ON ss.Cid=c.Cid WHERE c.Cname='MATH' 
/*第一个查询查询出选择COMPUTER课程的学生信息,  
第二个查询查询出选择MATH课程的学生信息,  
用INTERSECT关键字取交集*/ 
 
 
7. 查询COMPUTER课程比MATH课程分数高的学生学号
[sql] 
SELECT a.Sid FROM  
(SELECT s.Sid,s.Score FROM SC s JOIN Course c ON s.Cid=c.Cid WHERE c.Cname='COMPUTER') a  
JOIN 
(SELECT s.Sid,s.Score FROM SC s JOIN Course c ON s.Cid=c.Cid WHERE c.Cname='MATH') b  
ON a.Sid=b.Sid  
WHERE a.Score>b.Score  
/*将选了COMPUTER课的学生学号和成绩和选了MATH课的学生学号和成绩连接  
WHERE语句限制COMPUTER课的成绩高于MATH课*/ 
 
 
8. 查询和JOHN选的课相同的学生信息
[sql] 
SELECT Student.Sname FROM Student JOIN SC ON Student.Sid=SC.Sid  
WHERE SC.Cid IN 
(SELECT SC.Cid FROM SC JOIN Student ON SC.Sid=Student.Sid WHERE Student.Sname='JOHN') /*查询选了的课JOHN也都选了的学生的姓名*/ 
AND Student.Sname<>'JOHN' /*限制该学生不能是JOHN本人*/ 
GROUP BY Student.Sname   
HAVING COUNT(SC.Cid)=  
(SELECT COUNT(*) FROM SC JOIN Student ON SC.Sid=Student.Sid WHERE Student.Sname='JOHN') /*该学生选的课程总数与JOHN选的课程总数相同*/ 
 
 
9. 按总分为学生排名,总分相同名次相同
[sql] 
SELECT RANK() OVER (ORDER BY SUM(ss.Score) DESC) AS Rank, s.Sname, ISNULL(SUM(ss.Score),0)   
FROM Student s LEFT JOIN SC ss   
ON s.Sid = ss.Sid   
GROUP BY s.Sname   
ORDER BY SUM(ss.Score) DESC 
/*RANK()是SQL Server的一个built-in函数,语法为  
RANK() OVER ( [ partition_by_clause ] order_by_clause ).*/ 
 
 
10. 查询总分在100至200之间的学生姓名及总分
[sql] 
SELECT s.Sname,SUM(ss.Score) FROM Student s JOIN SC ss ON s.Sid=ss.Sid  
GROUP BY s.Sname HAVING SUM(ss.Score) BETWEEN 100 AND 200  
 
 
11. 查询总分第六到十名的学生姓名以及总分
[sql] 
SELECT * FROM 
(SELECT TOP(5) * FROM 
(SELECT TOP(10) SC.Sid,SUM(SC.Score) AS SUM FROM SC GROUP BY SC.Sid ORDER BY SUM(SC.Score)) a  
ORDER BY a.SUM) b  
ORDER BY b.SUM DESC 
/*SELECT TOP(10) SC.Sid,SUM(SC.Score) AS SUM FROM SC GROUP BY SC.Sid ORDER BY SUM(SC.Score)查询出总分前十名  
SELECT TOP(5) FROM (...) a ORDER BY a.SUM查询出成绩六到十名  
SELECT * FROM (...) b ORDER BY b.SUM DESC将结果倒序按照从高分到低分排列*/

学生成绩表的常用查询相关推荐

  1. Sql 查询学生成绩表中每个科目的最高分及对应科目和学生

    一道面试题,现场没写正确(默哀),回来记录一下 学生成绩表 : CREATE TABLE `tabscore` (   `id` int(11) NOT NULL AUTO_INCREMENT,   ...

  2. 学生成绩表的创建和查询

    学生成绩表的创建和查询 创建成绩表 创建新表 数据如下填写 插入信息 INSERT INTO `exam`(`name`,`chinese`,`math`,`english`) VALUES('小红' ...

  3. 用java输出学生信息表代码_使用java导出学生成绩表-excel成绩表

    本文简单研究使用java导出学生成绩表,使用到的导出Excel的技术为Apache poi,相关的技术可以查看我之前的文章.之前导出的Excel的格式为03版的xls,使用的jar为poi-3.10- ...

  4. 用计算机怎么做成绩表,利用Excel制作一个简单的学生成绩表.doc

    利用Excel制作一个简单的学生成绩表 教学设计表 学科 信息技术 授课年级 八年级 学校 教师姓名 章节名称初中信息技术八年级上册第7课(第1节)计划学时1学时学习内容分析学习Excel的基础知识, ...

  5. c语言实现创建学生成绩表,实现插入、删除和统计等管理功能。

    c语言实现创建学生成绩表,实现插入.删除和统计等管理功能. #include <stdio.h> #include <stdlib.h> #include <malloc ...

  6. oracle实验七 答案,Oracle表的常用查询实验(七)

    Oracle表的常用查询实验(七) 1.问题描述: 有一个商品信息表,该表反应了各种商品的销售情况,一个产品是按照gid和gname两个字段来区分的,一个产品可能会有多个型号. create tabl ...

  7. Sql Server 行转列学习 根据学生表、课程表、学生成绩表统计每个学生的各科成绩和他的总成绩、平均成绩...

    -------************************************************************* -------学习.测试行转列      ------- So ...

  8. html5学生成绩表,学生成绩表

    浙江省计算机二级办公软件 .16套题目加答案. 1. 使用数组公式,根据Sheet1中"学生成绩表"的数据,计算考试总分, 并将结果填入到"总分"列中. 计算方 ...

  9. 用html制作学生成绩表格代码,利用Excel制作学生成绩表.doc

    利用Excel制作学生成绩表 利用Excel制作学生成绩表 制作一个学生成绩自动统计表,可以自动统计最高分.最低分.总分.平均分.名次.三率等数据信息,还可以根据自定条件以不同的颜色显示分数.自动统计 ...

最新文章

  1. 数据库2.0 -- 数据类型和数据表的基本操作
  2. 2018区块链生存指南:要做飞行的猪、摔不坏的弹球、未来的种子
  3. C#中实现计时器功能(定时任务和计时多长时间后执行某方法)
  4. 科学计算机乱码,谁知道我的科学计算器这是怎么了?屏幕一堆乱码,什么都按不了...
  5. 【Linux基础】kiickstart无人值守安装
  6. MySQL InnoDB 锁表与锁行
  7. Keyword-Driven Testing
  8. 哪个银行的大额存款门槛最低?5万能买大额存单吗?
  9. Stream流思想和常用方法
  10. java 定义xml_java中web.xml定义详解
  11. Python学习之解释器的简单使用
  12. 数据结构笔记(十)-- 循环队列
  13. wincc连接mysql数据库说明_wincc 数据库的连接方法
  14. 一张浓缩大学生活的顶级报(转载)
  15. 用x32/x64dbg脱DLL壳(IAT表修复和重定位表修复)
  16. 微信小程序如何做营销推广?
  17. 互联网金融的信息安全(一)新环境的安全形势
  18. 学编程和乐高机器人的区别
  19. 解决oracle11卸载,Oracle11完全卸载方法
  20. 电视剧《猎毒人》观后感

热门文章

  1. dnw下载文件时can not open /dev/secbulk0的解决方法
  2. php数组和链表的区别,什么是链表?链表与数组的区别?
  3. JAVA面向对象编程程序设计——中国象棋
  4. Slf4j之MDC机制
  5. 品优购项目案例(练习)
  6. 永磁同步电机(三)——三相永磁同步电机仿真
  7. 人月神话(各章精选)
  8. mysql连接三个表
  9. EOS私链发币简要说明
  10. VisualVM使用方法