sql面试题详解4

1.查询不及格的课程、并按照课程号从大到小排列

Select coursenum From t_score Where score<60 Order By coursenum Desc

2.查询课程号为“003”且课程成绩在80分以上的学生的学号和姓名

这是比较基本的连接查询,sql语句如下所示

Select C.studentnum,C.sname From t_course A,t_score B ,t_student C 
Where 
A.coursenum=B.coursenum And C.studentnum=B.studentnum And B.score>60 And B.coursenum='c003'

3.求选了课程的学生人数

Select Count(*) From t_score

4.查询选修“叶平”老师所授课程的学生中,成绩最高的学生的姓名及成绩

这个题目稍微麻烦点,实现的sql也有好几种,单原理都是先找到叶平老师所教课程的课程号,之后对成绩表使用聚合函数max下面手机我写的sql语句

select C.*,A.score from t_score A,t_teacher B,t_student C,t_course D
where
A.studentnum=C.studentnum
and A.coursenum=D.coursenum
and D.teachernum=B.teachernum
and B.tname='叶平'
And A.score =(Select Max(score) From t_score Where coursenum=A.coursenum)

5.查询各个课程及相应的选修人数

还是简单的聚合函数和分组的使用,sql语句如下

Select Count(*) From t_score Group By coursenum

6.查询不同课程成绩相同的学生的学号、课程号、学生成绩
这个题目看起来好像有些复杂,主要还是考察自连接查询的使用,sql语句如下

Select Distinct A.studentnum,A.coursenum,A.score From t_score A,t_score B 
Where A.coursenum!=B.coursenum And A.score=B.score

7.检索至少选修两门课程的学生的学号
还是考察聚合函数和having的使用sql语句如下

Select studentnum From t_score Group By studentnum Having Count(coursenum)>=2

8.查询全部学生都选修的课程号和课程名
这个题目综合性比较强,主要考察了聚合函数、having、子查询的使用,sql语句如下

Select coursenum,cname From t_course Where coursenum In(
Select t.coursenum from t_score t Group By t.coursenum Having Count(t.studentnum)=(Select Count(*) From t_student)
)

9.统计没门课程的学生选修人数(超过10人的课程才统计),要求输出课程号和选修人数,查询结果按照人数降序排列,若人数相同,按课程号升序排列

还是考察聚合函数,having,group by的使用

Select count(studentnum) 选修人数,coursenum From t_score Group By coursenum Having  count(studentnum)>3 Order By count(studentnum)desc,coursenum

10.查询两门以上课程不及格的学生的学号及其平均成绩
考察聚合函数、分组、子查询的使用,sql语句如下
Select studentnum,Avg(score) From t_score Where studentnum In
(
 Select studentnum From t_score Where score<60 Group By studentnum Having Count(coursenum)>2
) Group By studentnum

11.检索“004”课程分数小于60,按分数降序排列的学生的学号

Select studentnum From t_score Where coursenum='c004' And score<60 Order By score Desc

12.删除“002”同学的“001”课程的成绩
Delete From t_score Where studentnum='002' And coursenum='001'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值