学生表S (SNO学号,Sname姓名,Class班级,Shigh身高)
课程表C(CNO课程号,CName课程名,CPreNO预修课程编码)
成绩表SC(CNO课程号,SNO学号,SCgrade成绩)
1、体育生选拔,要求身高在170cm以上,考试不及格课程在3门以下(不包括3门)平均成绩在60分以上。
学号姓名身高平均成绩
2、所有预选课程都已经合格的学生(预选课程不存在嵌套循环的情况)。
3、同时选修了‘离散数学’与‘组成原理’的,且高等数学成绩大于80分的。
学号姓名离散数学组成原理高等数学
分数分数分数
4、列出各门课程前三名(成绩相同,学号小的排名在前)
第一名第二名第三名
课程名班级:姓名:成绩班级:姓名:成绩班级:姓名:成绩
5、统计各科的学习情况。
课程名60以下[60,70)[70,85)[85,100)
6、按班级统计各科平均成绩。
课程名第一第二第三
班级:平均成绩班级:平均成绩班级:平均成绩
7、按班级统计各科平均成绩后,第一名3分,第二名2分,第三名1分,其他计0.5分(可以并列名次),最后给班级排名。(最后成绩一样,按班级序号小的排前)
第一名第二名第三名
Sql代码 收藏代码
--第1题
select td_b.SNO 学号, td_b.SNAME 姓名, td_b.SHIGH 身高, td_a.avgGrade 平均成绩 from
(select S.SNO,avg(SCgrade) as avgGrade from S,SC
where
S.SNO = SC.SNO and
S.Shigh>170
group by S.SNO
having
avg(SCgrade)>60) td_a
left join(
select * from S where not exists (
select a.sno from S a, SC b where
a.sno = b.sno
and b.scgrade<60
group by a.sno
having count(*) < 3)
) td_b
on td_a.SNO = td_b.SNO
--第2题
--第3题
select distinct S1.SNO as 学号, S1.SNAME as 姓名,
(select SC.SCgrade from SC,C where SC.CNO=C.CNO and C.CNAME='离散数学' and SC.SNO = SC1.SNO) as 离散数学,
(select SC.SCgrade from SC,C where SC.CNO=C.CNO and C.CNAME='组成原理' and SC.SNO = SC1.SNO) as 组成原理,
(select SC.SCgrade from SC,C where SC.CNO=C.CNO and C.CNAME='高等数学' and SC.SNO = SC1.SNO) as 高等数学
from SC SC1, S S1
where
SC1.SNO = S1.SNO
and S1.SNO in
(
select S.SNO from S,C,SC
where
S.SNO = SC.SNO and
SC.CNO = C.CNO and
C.CNAME='离散数学' and
S.SNO in (select t1.SNO from SC t1, C t2 where t1.CNO=t2.CNO and t2.cname='组成原理') and
S.SNO in (select t3.SNO from SC t3, C t4 where t3.CNO=t4.CNO and t4.Cname='高等数学'and t3.scgrade>80)
)
----另解
select distinct s.sno,s.sname,
(select scgrade from sc left join c on sc.cno=c.cno where c.cname='离散数学' and sc.sno=sc1.sno)"离散数学",
(select scgrade from sc left join c on sc.cno=c.cno where c.cname='组成原理' and sc.sno=sc1.sno) "组成原理",
(select scgrade from sc left join c on sc.cno=c.cno where c.cname='高等数学' and sc.sno=sc1.sno) "高等数学"
from s,sc sc1,C
where sc1.sno=s.sno
and s.sno in
(
select sno from sc left join c on sc.cno=c.cno where c.cname='离散数学' intersect
select sno from sc left join c on sc.cno=c.cno where c.cname='组成原理' intersect
select sno from sc left join c on sc.cno=c.cno where c.cname='高等数学' and sc.scgrade>80)
--第4题
select C.CNAME as 课程名,
max(case when ro=1 then '班级:'||td_b.class||' 姓名:'||S.SNAME||' 成绩:'||td_b.SCgrade else null end) as 第一名,
max(case when ro=2 then '班级:'||td_b.class||' 姓名:'||S.SNAME||' 成绩:'||td_b.SCgrade else null end) as 第二名,
max(case when ro=3 then '班级:'||td_b.class||' 姓名:'||S.SNAME||' 成绩:'||td_b.SCgrade else null end) as 第三名
from
(
select td_a.CNO, td_a.SNO, td_a.class, td_a.SCgrade, row_number() over(partition by CNO order by SCgrade desc) ro
from
(select CNO, S.SNO, Class, SCgrade
from S inner join SC
on S.SNO = SC.SNO
group by CNO, S.SNO, Class, SCgrade
order by S.SNO)td_a
)td_b , C, S
where td_b.cno = C.CNO and td_b.sno = S.SNO
group by CNAME
--第5题
select c.cname "课程号",
sum(case when (scgrade<60) then 1 else 0 end) "60分以下",
sum(case when (scgrade<70 and scgrade>=60) then 1 else 0 end) "[60,70)",
sum(case when (scgrade<85 and scgrade>=70) then 1 else 0 end) "[70,85)",
sum(case when (scgrade<=100 and scgrade>=85) then 1 else 0 end) "[85,100]"
from sc,c
where sc.cno=c.cno
group by c.cname
order by c.cname
--第6题
select CNAME 课程名,
max(case when ro=1 then '班级:'||td_b.Class||' 平均成绩:'||td_b.K_avg else null end) 第一,
max(case when ro=2 then '班级:'||td_b.Class||' 平均成绩:'||td_b.K_avg else null end) 第二,
max(case when ro=3 then '班级:'||td_b.Class||' 平均成绩:'||td_b.K_avg else null end) 第三
from
(
select td_a.CNO, td_a.Class, td_a.K_avg, row_number() over(partition by CNO order by K_avg desc)ro
from
(select distinct CNO, Class, avg(SCgrade)K_avg
from S inner join SC
on S.SNO = SC.SNO
group by CNO, class
order by class)td_a
)td_b, C
where td_b.CNO = C.CNO
group by CNAME
order by CNAME
--第7题
----没有max选出来有三行数据(td_e有三行数据),有了max就只有一行数据了正为所有数据
select max(case when rownum=1 then td_d.class else null end) 第一名,
max(case when rownum=2 then td_d.class else null end) 第二名,
max(case when rownum=3 then td_d.class else null end) 第三名
from
(
select td_c.class, sum1+sum2+sum3+sum4 as tscore
from
(
select td_b.class,
sum(case when ro=1 then 3 else 0 end) as sum1,
sum(case when ro=2 then 2 else 0 end) as sum2,
sum(case when ro=3 then 1 else 0 end) as sum3,
sum(case when ro<>1 and ro<>2 and ro<>3 then 0.5 else 0 end) as sum4
from
(
select td_a.CNO, td_a.Class, td_a.K_avg, row_number() over(partition by CNO order by K_avg desc)ro
from
(select distinct CNO, Class, avg(SCgrade)K_avg
from S inner join SC
on S.SNO = SC.SNO
group by CNO, class
order by class)td_a
)td_b
group by td_b.class
order by td_b.class
)td_c
order by tscore desc
)td_d
分享到:
相关推荐
SQL笔试题 本篇资源主要整理了多道SQL笔试题,涵盖了查询、删除、联合查询、分组等多个方面的知识点。 1. 查询出每门课都大于80分的学生姓名 知识点:子查询、distinct关键字 使用子查询可以实现该需求,子查询...
### SQL语句笔试经典考题知识点解析 #### 1. SQL语言的特点 - **非过程化**:SQL语言是一种非过程化的语言,这意味着用户只需指定要做什么,而不需要详细说明如何做。这使得SQL易于学习和使用。(选择题1) - **...
通过《2011 SQL笔试题》这样的练习材料,学习者可以测试并提升自己在SQL查询、数据操作、数据库设计和管理等方面的技能,为实际工作或面试做好充分准备。对于新手来说,这是一个极好的学习资源,可以帮助他们快速...
以下是一些关于SQL笔试选择题中的关键知识点: 1. **关系型数据库**:关系型数据库是一种以表格形式存储数据的数据库,其中数据之间的关系可以通过外键进行关联。题目中提到的Oracle和MySql都是典型的关系型数据库...
sql语句 建表 增加、删除、复杂查询字段
"SQL Server 面试笔试试题及答案" 本资源摘要提供了 SQL Server 面试笔试试题及答案,涵盖了数据库管理、数据模型、数据结构、数据库优化、SQL 语言等多方面的知识点。通过本资源,读者可以快速掌握 SQL Server 的...
SQL 笔试题是数据库领域中的一个重要组成部分,涉及到数据库的各个方面,包括触发器、存储过程、索引、内存泄漏、事务、锁、视图、游标等知识点。 1. 触发器的作用:触发器是一种特殊的存储过程,通过事件来触发...
经典sql练习,几道经典的SQL笔试题题目。sql就在于多多练习
包括所有SQL语句写法,只看这一个就够了。从此SQL语句再也不愁了。附送免费大厂SQL笔试练习题。
根据给定文件中的标题“SQL语句练习及答案”与描述“一个非常适合在笔试前看的SQL练习题。也可在在平时作为SQL语言练习题来使用”,我们可以看出这份材料主要包含了一系列针对SQL语言的练习题及其解答,适用于考前...
自己整理的SQLserver笔试题。 当做知识点记了 内附答案
在本文中,我们将深入探讨一些SQL的经典笔试题目及其相关知识点。 1. **单词解释** - **Data**: 数据,是数据库中的基本单元,可以是数字、文本、图片等。 - **Database**: 数据库,是组织和存储数据的系统,允许...
在SQL笔试题中,常见的知识点包括但不限于以下几类: 1. **基本查询**:掌握SELECT语句,包括选择列、表连接(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)、WHERE子句用于筛选数据,GROUP BY进行数据分组,...
在SQL语句笔试中,理解并熟练掌握各种SQL语句是非常重要的。以下是对标题和描述中涉及的SQL语句进行的详细说明: 1. 数据定义语言(DDL): - CREATE:创建数据库、表、索引等数据库对象。 - ALTER:修改已经存在...
SQL Server笔试题含答案 本资源是SQL Server笔试题含答案,涵盖了T-SQL语言相关的知识点。总共包括13道笔试题,涵盖了SQL Server中的多对多映射关系、事务、视图、局部变量、存储过程、索引等知识点。 1. SQL ...
【SQL Server 笔试题解析】 SQL Server 是一款由微软公司开发的关系型数据库管理系统(RDBMS),广泛应用于企业级数据存储和管理。本题主要考察的是SQL Server 2000的基础知识,包括单词解释、SQL语句编写、填空和...
SQL笔试题通常考察应聘者对于SQL语言的理解和实际应用能力,尤其是查询语句的编写、SQL函数的使用,以及多表连接操作等。本次整理的SQL题目覆盖了这些基础而又核心的知识点。 首先,基础查询语句的编写是考察的重点...
SQL笔试题库。
根据给定文件中的信息,我们可以将其中涉及到的SQL知识点归纳总结如下: ### 一、基础知识构建 ...通过学习这些题目,可以更好地理解和掌握SQL语言的强大功能,为日后的数据库管理工作打下坚实的基础。
1到3年工作经验的 sql面试笔试题(通过面试360,华为,阿里收集)