sql刷题
⑴ sql简单习题两道
1:select "书名","定价" from "图书馆"
where "定价" = (select top 1 "定价" from "图书馆" desc as '定价')
//就是要查出定价最高的价格,可以对定价排序,取到,这个你可以自己实践下,我忘了命令了,本机上没装SQL
2:就是要你查出 藏有 发行“书名=‘数据库系统基础’”的图书馆馆名
3:select CNAME,TEACHER from c where C# =
(select C# from SC where S# = '10001')
⑵ 用SQL语句做题。谢谢啦。。
一(1):SQL>select * from 学生表;
or select 学号,姓名,专业 from 学生表;
(2)SQL>select 姓名 from 学生表 where 学号=’A050040012’;
(3)SELECT TOP 5 * FROM 成绩表
(4)select 学号,姓名,课程号,成绩 from 学生表,成绩表,课程表 where 学生表.学号=成绩表.学号and 课程表.课程号=成绩表.课程号;
(5)select 学号,成绩 from 学生表,成绩表
where 学生表.学号=成绩表.学好 and 课程号=’02’and 成绩>=80;
(6)select学号,成绩 from 成绩表 where 课程号=’03’and 成绩 between 75 and 85; 其他=下 太多了 一时做不来
二(1)INSERT INTO 成绩表 values('A050010012','02','','80');
(2)UPDATE 学生表 SET 班级=’0012’,专业=’计算机应用’
where 姓名 IN
(SELECT 姓名 FROM 学生表
WHERE 姓名=’王玮’);
(3)UPDATE 成绩表 SET 成绩=92
WHERE 姓名 IN
(SELECT 姓名=李丽);
(4)DELETE FROM 成绩表,学生表
WHERE 学号 IN
(SELECT 学号 FROM 学生表,成绩表
WHERE 学生表.学号=成绩表.学号AND 学号=’A050010025’);
(5)CREATE UNQUE INDEX INDEX-1
ON 成绩表(学生表,课程表);
如果还没解决你的问题,可以加我网络HI账号。
⑶ sql简单试题懂得来大神们帮帮忙
问题一: Create table 运动员( 运动员编号 char(6) ___not null_____ primary key ____, 姓名varchar(40), 性别char(2)____constraint chk1 _ check(性别='男' or 性别='女')________, 年龄char(2), 队名char(20), __constraint chk2__ check(队名('A队'B队'C队'D队))_______; ) (我不知道最后那些算不算是空格,是的话,你可以追问....) 问题二: (1) 统计参加比赛时女运动员的人数。 Select _count(运动员编号) as 参赛女运动员_ From 运动员 Where 性别=‘女’; (2) 查询100576 号运动员参加的所有项目名称及其比赛的时间和地点。 Select 项目编号,项目名,比赛时间,比赛场地 From ___项目 a ,参赛 b__ Where _____a.项目编号=b.项目编号________ And _______b.运动员编号='100576'______; 如有疑问请追问....
⑷ SQL数据库练习题~
1.select name from 学生
where 系别='数学系' and 性别='女';
2.select a.name from 学生 a inner join 选课 b
on a.学号=b.学号
where 成绩<60;
3.select a.name from 学生 a inner join 选课 b
on a.学号=b.学号
where avg(成绩)>=95;
4.select a.name from 学生 a inner join 选课 b
on a.学号=b.学号
where (select b.成绩 from 课程 c inner join 选课 b
on c.课程号=b.课程号 where 课程名='SQL Server 2000')<60
5.update 学生
set 年龄=年龄+1;
⑸ 急求SQL数据库练习题
楼上的--理论很多不太使用:ㄨinsert -增加语句用法 insert into(Name,Sec)values("张三","李四") --这个语句1.习题:插入学员信息 Name,Sex,Age,Address (地址可为null) 要有自动标识列。 2.实现一次插入多行。3.把原有表中的某个字段 移到新表中 提示:select <字段> into newtable from <原表> ㄨdelecte --删除语句delecte from <表> [where<条件>]例题:上表中 --删除 年龄是66和地址为null 信息 (年龄与地址自己添加) ㄨupdate--更新语句update set <条件> where[限制条件]例题:把年龄大于50岁的 更新为49岁 其余条件自己加 ㄨselect --查询语句select <字段1>,<字段2> from <表> where [条件]例题:从表1、表2中查找相同字段并且 把相同字段存放到新的表中这里子查询就不多说了。这些题很基础你试一试。
⑹ sql数据库练习题,急求!!!
创建一个选择查询,按系别统计各自男女学生的平均年龄
SELECT
系,
性别,
AVG(年龄) AS 平均年龄
FROM
表
GROUP BY
系,
性别
上面是用 SQL 的处理方法。
楼主要求 “最好不是SQL啊”, 不知道楼主 希望是用什么?
一步一步操作?
那要说明是什么数据库啊.
如果是 Access的话, 操作顺序是这样的:
1、创建一个查询
2、在《显示表》窗口里面,把那个表 选中,按 添加按钮。
3、关闭《显示表》窗口, 进入设计窗口。
4、在表中,双击 系, 性别, 年龄 这3列, 加到下面的列表中。
5、在下面列表的地方,鼠标右键,在弹出窗口,选择 “汇总”
6、修改 年龄下面的 Group By, 变成 “计算” 注意,不是“总计”。
7、运行查询。
⑺ 哪里可以刷SQL题
在浏览器中输入localhost:端口号/phpmyadmin安装包/index.php,回车,输入连接数据库的用户名和密码,点击执行,连接数据库,出现如图,可以实现图形化管理mysql数据库!
⑻ 计算机SQL语言试题
(一)现有关系数据库如下: 数据库名:我班同学数据库同学表(学号 char(6),姓名,性别,年龄,民族,身份证号,宿舍号) 宿舍表(宿舍号 char(6),宿舍电话) 用SQL语言实现下列功能的sql语句代码:1.创建数据库[我班同学数据库]代码。2.创建数据表[宿舍表]代码; 宿舍表(宿舍号 char(6),宿舍电话) 要求使用:主键(宿舍号)、宿舍电话:以633开头的7位电话号码3.创建数据表[同学表]代码; 同学表(学号 char(6),姓名,性别,年龄,民族,身份证号,宿舍号) 要求使用:主键(学号)、外键(宿舍号)、默认(民族)、非空(民族,姓名,年龄)、唯一(身份证号)、检查(性别)4.将下列宿舍信息添加到宿舍表的代码 宿舍号 宿舍电话 101 6331157 102 6331777 修改 宿舍号为101的 宿舍电话:6331158 删除 宿舍号为102的 宿舍信息5.创建视图[同学表视图]代码; 同学表视图(学号, 姓名, 性别, 年龄, 民族, 身份证号, 宿舍号, 宿舍电话)6.从同学表视图中查询姓张的女同学的姓名、性别、宿舍电话。7.从同学表中查询女同学的最大年龄、最小年龄、平均年龄。8.创建带参数的存储过程[某宿舍同学]:姓名, 性别, 宿舍电话 执行此过程,查询'101'宿舍情况 (二) 现有关系数据库如下: 数据库名:学生成绩数据库学生表(学号 char(6),姓名,性别,民族,身份证号) 课程表(课号 char(6),名称) 成绩表(ID,学号,课号,分数) 用SQL语言实现下列功能的sql语句代码:1.创建数据库[学生成绩数据库]代码 ;2.创建[课程表]代码 ; 课程表(课号 char(6),名称) 要求使用:主键(课号)、非空(名称)3. 创建[学生表]代码 ; 学生表(学号 char(6),姓名,性别,民族,身份证号) 要求使用:主键(学号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性别)4. 创建[成绩表]代码 ; 成绩表(ID,学号,课号,分数) 要求使用:主键(课号)、外键(成绩表.学号,成绩表.课号)、检查(分数),自动编号(ID)5. 将下列课程信息添加到课程表的代码 课号 课程名称 100001 大学语文 100002 大学英语 100003 西班牙语 修改 课号为100002的课程名称:实用英语 删除 课号为100003的课程信息 6. 写出创建:成绩表视图(学号,姓名,课号,课程名称,分数)的代码; 8. 写出创建:某门课程高低均分 计算某门课程成绩最高分、最低分、平均分 存储过程以及执行的代码; 执行:所有修 实用英语 这门学生的最高分、最低分、平均分;9. 检索姓李的女同学的情况:姓名、性别、民族。 10.检索有一门或一门以上课程成绩大于等于90分的所有学生的信息,包括学号、姓名。 (三)有一个[学生课程]数据库,数据库中包括三个表:学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为: Student(Sno,Sname,Ssex,Sage,Sdept) ,Sno 为关键字。课程表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记为:Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。 成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记为:SG(Sno Cno, Grade) (SNO, CNO)为关键字。用SQL语言实现下列功能:1.建立学生表Student,其中学号属性不能为空,并且其值是唯一的。2.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。3.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。4.查询学习1号课程的学生最高分数、平均成绩。5.查询与“李洋”在同一个系学习的学生。6.将计算机系全体学生的成绩置零。
有些秘密是男人永远不会说的,所以就不要再问了,因为再问,他们给的答案也不会是真的!
1、男人很容易喜欢一个女人,却不轻易深爱一个女人。
2、男人在感情的王国里,绝对是个昏君。女人只要肯奉承,他什么都答应。
3、男人普遍喜欢外表温柔的女子,宁愿把精力花在事业或其他地方,也不愿全用来征服女人。
4、男人都不太重视对自己太好的女人。
5、男人都怕女人死缠烂打,但喜欢用同样的方式对付没追上的女人。
6、男人的梦想之一,是拥有可以超越友谊界限的红颜知己。
7、男人会以很理性的态度取舍爱情,就算他感性上很爱一个人,但当他清楚她并非一个好妻子时,他会放弃她,另找合适家居生活的那一个。男人认为恋爱和结婚是两回事,很多时候,他拖延结婚,根本原因就是他认为身边的女人不是想象中的好妻子。
8、男人对妻子的要求,可能比对恋人更低——在外型上,在性格上则更高。
9、懂得欣赏聪明女人的男人不多,和她们在一起,男人总觉得缺乏安全感受。
10、当有喜欢的女人在场时,男人会有如下表现:话多;显得聪明些;比平日慷慨;会把话题扯到得意成就上;会刻意显露平时少见的好心肠;多说一些自以为好笑的笑话引大家发笑。
11、一个男人同时是大男人和小男人的化身。大男人的他,希望女人完全迁就他,令他放心;小男人的他,意识到自己懦弱无能的一面,犹豫不决。说穿了,他们很多都是忌妒心重的小器鬼,又像孩子般容易被哄骗。
12、男人追求女人的时候愿意割舍一切自由,追到了越来越感到自由的重要性。
13、男人内心隐藏着狩猎心态,追捕,得到后就要驯服她,让她变成可在家饲养的乖乖动物。
14、男人都有爱当英雄的自大心态,所以很容易爱上向他诉苦的女人。
15、男人希望身边的女人明白:带着同一个女人去所有地方,实在是一件很闷的事(或许女人也这样觉得吧,只是不好意思说),所以和其他女人适度约会,是调剂和放松,完全可以没有其他企图。
16、两性关系中,女人需要男人告诉她,他愿意为她做任何牺牲,男人则需要女人告诉他,他很能干。
17、男人自以为是的多情,常常是女人眼中不折不扣的薄幸。
18、在男人心底,亲热到哪个程度,就是和女人的恋情发展到什么程度。
19、男人每隔一段时间,就有情绪和体力跌到谷底的几天,不想见任何人,躲起来翻翻书,听听音乐,看看影碟或狂打电玩发泄。
20、有过恋爱经验的男人都知道:女人是不能不骗的,类似像:“我会永远爱你”,“我一直都会像现在这样疼你”,“什么时候需要我,一个电话我就立刻赶来”,“我以后再也不会像爱你这样去爱另外一个人”这种话是必须要说但永远坚持不了的“骗话”,谁让女人这么爱听呢!
21、男人遇上旧情人多半会自作多情,以为与自己有过感情的人,内心总会保存一份情,幻想爱过他的女人永远爱他。女人只会美化眼前的男人,男人却不自觉地美化逝去的恋情。所以男人比女人更认同:分手还是朋友。不管是甩人还是被甩,男人多半愿意与前女友继续保持联络。
22、女人在意男友以前的女友,男人却在意女人离开他后找个什么样的男友。如果分手后仍是朋友的,他会时不时批评她的男友。
23、男人跌入爱河,很少问她的过去,不太关心她和哪种男人谈过恋爱,因为男人较注重女人的外表——外表就是现在。
24、男人不愿听心上人的旧恋情,因为一想到自己爱的人之前和其他男人有过肌肤之亲,就难以忍受。
25、面对两个对自己有爱意的人,女人会在徘徊中选择,男人不会为此烦恼——他其实只想同时追上两个人呢!
26、男人爱上一个女人,不一定对她有强烈的亲热冲动,反倒对一些他只是喜欢而不爱的女人,冲动更大些。
27、男人很容易被女人吸引,但他分得出哪种渴求出于性还是爱,大概知道能从她身上得到什么。
28、女人主动示爱,对男人来说,唯一的损失就是缩短了那段朦朦胧胧,若有若无的浪漫日子。
29、男人相信证明自身出色的重要表现之一是:拥有更多的女人。事业上越出色的男人,往往需要更多女人的仰慕和倾心以体现他的超凡脱俗。
30、男人在分手问题上拖泥带水,其实是想把去留的难题丢给女人,减少自己决定带来的内疚感。
31、男人说的“未来”是6个月到1年时间,女人的定义则可以是10年到50年。当男人爱上一个女人,他只会想象如何在短暂的未来与她亲密发展;女人则幻想到恋爱,结婚,生孩子乃至如何白头到老。
32、男人基本是都小器,大方是装出来的。表面上他们不拘小节,其实内心和女人一样,计算得清清楚楚。
33、女性较容易坦白心事,男人恰恰相反。遇到烦恼,他们找个别好友倾诉时,不会说得很完整,总会给自己留最后一点面子。男人的倾诉都是经过包装或刻意切碎的,不让一个人知道全部。这也是女人很难了解男人的原因——他们根本不想被人彻底了解。
34、一个男人可以爱上两个女人,但究竟喜欢哪个多一点,他多半分不清楚。
35、男人看待婚外情比女人实际,因为他有更多机会涉及婚外情,而且他心里明白——花心隐藏在男人的天性中。
36、男人要变心,其实和女人是否注意保持美丽仪表没直接关系,那只是他的借口之一。当他厌倦一个女人,不管她多漂亮,只要是她以外的任何女人,他都觉得比她有吸引力。
37、成熟男人对于崇拜他的少女,抵抗力是相当弱的。
38、男人年纪越大,择偶越随心所欲,乃至不顾他人的任何想法。
39、对许多男人来说,真爱意味着——爱情减去性。换句话,男人只要觉得女人缺乏性的吸引力,就可以一直跟她做单纯的朋友。
40、男人在有寻求亲热的身体冲动那一刻,对异性的要求忽然降低,他会觉得一个平时普通的女人很可爱,甚至很性感。不过等冲动一旦消退,他立刻恢复了习惯的审美判断。
41、男人对女人的爱天天快递查询 http://www.paijian.com/tt.html总是混合了生理冲动,亲热前他觉得女人什么都好,之后却可以无半点留恋,但为了不背负太多罪恶感,他们可以装作温柔地在事后继续吐露缠绵的情话。
42、男人很容易爱上卖弄风情,看起来唾手可得的女人,因为他觉得有更多机会触摸。
⑼ SQL练习题
一 学生 – 课程数据库
1 查询 7号课程没有考试成绩的学生学号
select sno from sc where cno=’7’ and grade is not null
2 查询 7号课程成绩在90分以上或60分以下的学生学号
select sno from sc where grade>90 or grade<60
3 查询课程名以“数据”两个字开头的所有课程的课程号和课程名。
Select cno,cname from c where cname like ‘数据%’
4 查询每个学生所有课程的平均成绩,输出学生学号、平均成绩
select sno,avg(grade) from sc group by sno
5 查询每门课程的选修人数,输出课程号、选修人数。
Select cno,count(*) from sc group by cno
6 查询选修 7号课程的学生的学号、姓名、性别。
Select s.sno, sname,ssex from s , sc where s.sno=sc.sno and cno = ‘7’
7 查询选修7号课程学生的平均年龄。
Select avg(sage) from s , sc where s.sno=sc.sno and cno = ‘7’
8 查询由30名以上学生选修的课程号。
Select sno from sc group by cno having count(*)>30
9 查询至今没有考试不及格的学生学号
a: select sno from s where sno not in ( select sno from sc where grade<60 )
b: select sno from sc group by sno having min(grade)>=60
二
1 找出选修课程号为 C2 的学生学号与成绩。
Select sno,grade from sc where cno=’C2’
2 找出选修课程号为C4 的学生学号与姓名。
Select s.sno , sname from s,sc where s.sno=sc.sno and cno=’C4’
3 找出选修课程名为 Maths 的学生学号与姓名。
Select s.sno ,sname from s,sc,c
where s.sno=sc.sno and c.cno=sc.cno and cname = ‘Maths’
4找出选修课程号为C2或C4 的学生学号。
Select distinct sno from sc where cno in (‘C2’,’C4’)
或: Select distinct sno from sc where cno=’C2’ or cno =’C4’
5找出选修课程号为C2和C4 的学生学号。
Select sno from sc where cno =’C2’ and sno in (
select sno from sc where cno = ‘C4’ )
6 找出不学C2课程的学生姓名和年龄
select sname , sage from s where sno not in ( select sno from sc where cno=’C2’ )
或:
select sname , sage from s where not exists ( select * from sc where sc.sno=s.sno and cno=’C2’ )
7 找出选修了数据库课程的所有学生姓名。(与3同)
Select s.sno ,sname from s,sc,c
where s.sno=sc.sno and c.cno=sc.cno and cname = ‘数据库’
8 找出数据库课程不及格的女生姓名
嵌套:
select sname from s where ssex = ‘女’ and sno in ( select sno from sc where grade<60 and cno in ( select cno from c where cname=’数据库’) )
连接:
Select sname from s,sc,c
where s.sno=sc.sno and c.cno=sc.cno and ssex=’女’ and cname = ‘数据库’ and grade<60
9 找出各门课程的平均成绩,输出课程名和平均成绩
select cname , avg(grade) from sc , c where c.cno =sc.cno group by sc.cno
10找出各个学生的平均成绩,输出学生姓名和平均成绩
select sname , avg(grade) from s , sc where s.sno=sc.sno group by sc.sno
11 找出至少有30个学生选修的课程名
select cname from c where cno in ( select cno from sc group by cno having count(*)>=30 )
12 找出选修了不少于3门课程的学生姓名。
Select sname from s where sno in ( select sno from sc group by sno having count(*)>=3)
13 找出各门课程的成绩均不低于90分的学生姓名。
Select sname from s where sno not in ( select sno from sc where grade<90)
14* 找出数据库课程成绩不低于该门课程平均分的学生姓名。
Select sname from s where sno in (
Select sno from sc , c where sc.cno=c.cno and cname=’数据库’ and
Grade > (Select avg(grade) from sc , c where sc.cno=c.cno and cname=’数据库’ ) )
15 找出各个系科男女学生的平均年龄和人数。
Select sdept,ssex , avg(sage) , count(*) from s
Group by sdept , ssex
16 找出计算机系(JSJ)课程平均分最高的学生学号和姓名。
Select sc.sno , sname from s, sc where s.sno=sc.sno and sdept=’JSJ’
Group by sc.sno Having avg(grade) =
( Select top 1 avg(grade) from sc, s where s.sno=sc.sno and sdept=’JSJ’
group by sc.sno order by avg(grade) DESC )
三 客户 – 商品数据库中包括3按各表:KH,FP,YWY
1 查询工资在 1000 到3000 元之间的男性业务员的姓名和办公室编号。
Select Yname , Ono from YWY where salary between 1000 and 3000 and Ysex=’男’
2 查询各个办公室的业务员人数,输出办公室编号和对应的人数。
Select Ono , count(*) from YWY group by Ono
3 查询每个客户在2002年5月购买的总金额,输出客户号和相应的总金额。
Select Kno,sum(Fmoney) from FP where fdate between ‘2002.5.1’ and ‘2002.5.31’
Group by Kno
4 查询2002年5月购买次数超过5次的所有客户号,且按客户号升序排序。
Select Kno from FP where fdate between ‘2002.5.1’ and ‘2002.5.31’
Group by Kno having count(*)>5
Order by Kno ASC
5 查询各办公室男性和女性业务员的平均工资。
Select Ono,Ysex ,avg(salary) from YWY group by Ono , Ysex
6 查询2002年5月曾经在王海亮业务员手中购买过商品的客户号、客户姓名、联系电话。
Select Kno,Kname,phone from KH where Kno in (
Select kno from FP where fdate between ‘2002.5.1’ and ‘2002.5.31’ and
Yno=(select Yno from YWY where Yname = ‘王海亮’ )
7 查询所有工资比1538号业务员高的业务员的编号、姓名、工资。
Select yno ,Yname, salary from YWY where salary >
( Select salary from YWY where Yno=’1538’ )
8 查询所有与1538号业务员在同一个办公室的其他业务员的编号、姓名。
Select Yno , Yname from YWY where Yno<>’1538’ and Ono in (
Select Ono from YWY where Yno=’1538’ )
9 查询销售总金额最高的业务员的编号。
Select Yno from FP Group By Yno Having sum(Fmoney) =
(Select top 1 sum(Fmoney) from FP group by Yno ORDER BY sum(Fmoney) DESC)
10 查询所有业务员的编号、姓名、工资以及工资比他高的其他业务员的平均工资。
利用自身连接
Select y1.Yno ,y1.Yname ,y1.salary , avg( y2. salary) from YWY y1 , YWY y2
Where y1.Yno<>y2.Yno and y1.salary < y2.salary
Group by y1.Yno
Sno salary sno salary
1 100 1 100
2 120 2 120
3 90 3 90
4 110 4 110
四 某中学数据库中由一张表:
学生选课表:由板及代码、班内学号、姓名、科目、成绩五个属性组成,关系模式为
SC(BJDM,BNXH,XSXM,KM,CJ) ,其中(BJDM,BNXH)为主码。
说明:每个学生每门科目存放一个记录,科目有“语文”、“数学”、“外语”三门。
1 找出每个班级的班级代码、学生人数、平均成绩。
Select BJDM,count(*) ,avg(CJ) from SC group by BJDM
2 找出每个学生的班级代码、学生姓名、考试科目数、总成绩。
Select BJDM,XSXM,count(*) , sum(CJ) from SC
Group by BNXH
3 输出一张表格,每位学生对应一条记录,包括:班级代码、姓名、语文成绩、数学成绩、外语成绩。
方法一:利用视图
create view v1 (bjdm,xsxm, yw,sx,wy ) AS
select bjdm , xsxm , cj , 0,0 from sc where km=’语文’
union
select bjdm , xsxm , 0 , cj,0 from sc where km=’数学’
union
select bjdm , xsxm , 0,0,cj from sc where km=’外语’
select bjdm, xsxm , sum(yw) as 语文, sum(sx) as 数学, sum(wy) as 外语 from v1 group by bjdm, xsxm
方法二:自身连接
select a.bjdm,a.xsxm , a.km,a.cj , b.km,b.cj , c.km,c.cj from sc a , sc b , sc c
where a.bjdm=b.bjdm and a.bnxh= b.bnxh and b.bjdm=c.bjdm and b.bnxh= c.bnxh
and a.km=’语文’ and b.km=’数学’ and c.km=’外语’
方法三:利用存储过程(略)
4 输出一张表格:由成绩低于60分的每位学生对应一条记录,包括字段:班级代码、姓名、最低成绩。
Select bjdm,xsxm ,min(CJ) from sc where grade<60 group by bjdm,xsxm
5输出一张表格:由成绩低于60分的每位学生对应一条记录,包括字段:班级代码、姓名、最高成绩、平均成绩。
得到平均成绩:create view V1 (bjdm,bnxh ,avg_cj) AS
select bjdm,bnxh ,avg(cj) from sc where bjdm , bnxh
select sc.bjdm,sc.xsxm ,max(cj) , avg_cj from sc , V1
where sc.bjdm=v1.bjdm and sc.bnxh=V1.bnxh and cj<60
group by sc.bjdm,sc.xsxm
6输出一张表格:所有成绩不低于60分的每位学生对应一条记录,包括字段:班级代码、姓名、平均成绩。
select bjdm, xsxm , avg(cj) from sc
where sno not in ( select sno from sc where grade<60)
group by bjdm, xsxm
7输出一张表格:每一位学生对应一条记录,包括字段:班级代码、姓名、去掉一个最低分后的平均成绩。
方法一:
得到每个学生的最低分:
create view V1 (bjdm,bnxh ,min_cj) as
select bjdm,bnxh,min(cj) from sc group by bjdm,bnxh
select sc.bjdm,sc.xsxm , avg(cj) from sc , v1
where sc.bjdm=v1.bjdm and sc.bnxh=v1.bnxh and sc.cj <> v1.min_cj
group by bjdm,bnxh
方法二:
select sc.bjdm,sc.xsxm , ( sum(cj) – min(cj) ) / count(*) from sc
group by bjdm , bnxh
8输出一张表格:每门科目对应一条记录,包括字段:科目、去掉一个最低分后的平均成绩。
方法一:
得到每门课的最低分:
create view V1 ( km, min_cj) as
select km,min(cj) from sc group by km
select sc.km , avg(cj) from sc , v1
where sc.km=v1.km and sc.cj <> v1.min_cj
group by sc.km
方法二:
select km , (sum( cj) – min(cj) )/count(*) from sc
group by km
补充9:输出表格:每门科目对应一条记录,包括字段:科目、去掉一个最低分和最高分后的平均成绩。
select km , (sum( cj) – min(cj) – max(cj) )/count(*) from sc
group by km
五 数据库存放着某高校1990年以来英语四、六级的考试情况,且规定:
1 英语四、六级考试每年分别在6月和12月举行二次;
2 四级没有通过的学生不能报考六级;
3 某一级的考试只要没有通过可以反复参加考试;
4 某一级的考试一旦通过就不能再报考同级的考试;
5 允许报了名但不参加考试。
该数据库中有二张表,相应的关系模式如下:
学生表:S(Sno, Sname, Ssex, Sage, Sdept),其中Sno为主码。
考试表:E(Sno, Year, Month, Level, Grade),学号、年、月、级别、成绩。
其中(Sno, Year, Month)为主码。
1. 找出各次四级和六级考试的参考人数和平均成绩(报了名但没有参加考试的不作统计)
select year , month,level ,count(*) , avg(grade)
group by year,month , level
2. 找出各次四级考试中平均分最高的系科(报了名但没有参加考试的不作统计)。
A: Select sdept from s , e where s.sno=e.sno
Where level=4
Group by sdept
Having avg(grade)>=ALL(
Select avg(grade) from s , e where s.sno=e.sno where level=4 Group by sdept )
B: Select top 1 sdept from s , e where s.sno=e.sno
Where level=4
Group by sdept
Order by (avg(grade) desc
3. 找出已经通过英语六级考试的学生的学号、姓名和性别(用连接方法做)
select s.sno,sname,ssex from s,e
where s.sno=e.sno and level=6 and grade>=60
4. 找出在同一年中四、六级考试都参加了的学生的学号
1) select sno from E
where (level=4 and grade>=60) or level=6
group by year having count(*)>=2
2) select sno from E X where level=4 and grade>=60 and exists (
select * from E Y where Y.sno=X.sno and year=X.year and level=6 )
5. 找出只参加一次考试就通过了英语六级考试的学生的学号
select sno from E
where level=6
group by sno
having count(*)=1 错,想想为何?
1) select sno from E
where level=6
group by sno
having count(*)=1 and max(grade)>=60
2) select sno from E where level=6 and grade>=60 and sno in (
select sno from E where level=6 group by sno having count(*)=1)
6. 找出至今没有通过英语四级考试的学生的学号(应包括至今还没有参加过考试或者是参加了但还没有通过两种)
select sno from E where level=4
group by sno
having max(grade)<60
Union
Select sno from s where sno not in( select sno from E)
7. 找出英语六级考试中合格人数最少的考试年份和月份(有并列的都要列出,用一句SQL语句)。
Select year , month From E
Where level = 6 and grade>=60
Group by year , month
Having count(*) <=all
(Select count(*) from E where level=6 and grade>=60 group by year , month )
我是从“上海全鼎软件学院”毕业的————————