学生成绩表的常用查询
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将结果倒序按照从高分到低分排列*/
学生成绩表的常用查询相关推荐
- Sql 查询学生成绩表中每个科目的最高分及对应科目和学生
一道面试题,现场没写正确(默哀),回来记录一下 学生成绩表 : CREATE TABLE `tabscore` ( `id` int(11) NOT NULL AUTO_INCREMENT, ...
- 学生成绩表的创建和查询
学生成绩表的创建和查询 创建成绩表 创建新表 数据如下填写 插入信息 INSERT INTO `exam`(`name`,`chinese`,`math`,`english`) VALUES('小红' ...
- 用java输出学生信息表代码_使用java导出学生成绩表-excel成绩表
本文简单研究使用java导出学生成绩表,使用到的导出Excel的技术为Apache poi,相关的技术可以查看我之前的文章.之前导出的Excel的格式为03版的xls,使用的jar为poi-3.10- ...
- 用计算机怎么做成绩表,利用Excel制作一个简单的学生成绩表.doc
利用Excel制作一个简单的学生成绩表 教学设计表 学科 信息技术 授课年级 八年级 学校 教师姓名 章节名称初中信息技术八年级上册第7课(第1节)计划学时1学时学习内容分析学习Excel的基础知识, ...
- c语言实现创建学生成绩表,实现插入、删除和统计等管理功能。
c语言实现创建学生成绩表,实现插入.删除和统计等管理功能. #include <stdio.h> #include <stdlib.h> #include <malloc ...
- oracle实验七 答案,Oracle表的常用查询实验(七)
Oracle表的常用查询实验(七) 1.问题描述: 有一个商品信息表,该表反应了各种商品的销售情况,一个产品是按照gid和gname两个字段来区分的,一个产品可能会有多个型号. create tabl ...
- Sql Server 行转列学习 根据学生表、课程表、学生成绩表统计每个学生的各科成绩和他的总成绩、平均成绩...
-------************************************************************* -------学习.测试行转列 ------- So ...
- html5学生成绩表,学生成绩表
浙江省计算机二级办公软件 .16套题目加答案. 1. 使用数组公式,根据Sheet1中"学生成绩表"的数据,计算考试总分, 并将结果填入到"总分"列中. 计算方 ...
- 用html制作学生成绩表格代码,利用Excel制作学生成绩表.doc
利用Excel制作学生成绩表 利用Excel制作学生成绩表 制作一个学生成绩自动统计表,可以自动统计最高分.最低分.总分.平均分.名次.三率等数据信息,还可以根据自定条件以不同的颜色显示分数.自动统计 ...
最新文章
- 数据库2.0 -- 数据类型和数据表的基本操作
- 2018区块链生存指南:要做飞行的猪、摔不坏的弹球、未来的种子
- C#中实现计时器功能(定时任务和计时多长时间后执行某方法)
- 科学计算机乱码,谁知道我的科学计算器这是怎么了?屏幕一堆乱码,什么都按不了...
- 【Linux基础】kiickstart无人值守安装
- MySQL InnoDB 锁表与锁行
- Keyword-Driven Testing
- 哪个银行的大额存款门槛最低?5万能买大额存单吗?
- Stream流思想和常用方法
- java 定义xml_java中web.xml定义详解
- Python学习之解释器的简单使用
- 数据结构笔记(十)-- 循环队列
- wincc连接mysql数据库说明_wincc 数据库的连接方法
- 一张浓缩大学生活的顶级报(转载)
- 用x32/x64dbg脱DLL壳(IAT表修复和重定位表修复)
- 微信小程序如何做营销推广?
- 互联网金融的信息安全(一)新环境的安全形势
- 学编程和乐高机器人的区别
- 解决oracle11卸载,Oracle11完全卸载方法
- 电视剧《猎毒人》观后感