您的位置:首页 > 职场人生

sql面试题详解3

2014-01-24 13:28 344 查看
今天的这部分题目还是比较简单,主要还是sql语句的基础,题目不是很绕仔细想就能把语句写出来了

1.查询每门课程被选修的学生数

这题主要考察聚合函数以及分组的使用,sql语句如下

Select Count(studentnum),coursenum From t_score Group By coursenum;

2.查询只选修了一门课程的全部学生的学号和姓名
这题还是考察聚合函数和分组的使用,只是额外加了having

Select A.studentnum,B.sname From t_score A,t_student B
Where
A.studentnum=B.studentnum
Group By A.studentnum,B.sname
Having Count(A.studentnum)=1 ;

3.查询男生人数、女生人数
和上面的第一题大致相同,只是换了一个表

Select Count(studentnum) 男生人数 From t_student Group By ssex Having ssex=1
Select Count(studentnum) 女生人数 From t_student Group By ssex Having ssex=0

4.查询姓张的学生名单
Select * From t_student Where sname Like '张%'

5.查询同名同姓的学生名单并统计同名人数
Select count(studentnum),sname From t_student Group By sname Having Count(studentnum)>1

这里要知道同名就是名字相同的学生,也就是同一个名字出现一次以上

6.查询没门课程的平均成绩,记过按平均成绩升序排列,平均成绩相同时按课程号降序排列

还是考察聚合函数、分组以及排序的使用,sql如下

Select Avg(score),coursenum From t_score Group By coursenum Order By Avg(score),coursenum Desc

7.查询平均成绩大于85的所有学生的学号、姓名、平均成绩
Select A.studentnum,B.sname,Avg(A.score) From t_score A,t_student B Where A.studentnum=B.studentnum Group By A.studentnum,B.sname Having Avg(A.score)>85

8.查询课程名称为“数据库”,且分数低于60分的学生的姓名和分数
这个题目主要考察连接查询的基本使用,sql语句写出来也很简单

Select C.sname,A.score From t_score A,t_course B,t_student C
Where
A.coursenum=B.coursenum And A.studentnum=C.studentnum And B.cname='数据库'
and A.score<60

9.查询所有学生的选课情况
还是考察多表连接查询,sql语句如下所示

Select A.sname,B.cname From t_student A,t_course B,t_score C
Where
A.studentnum=C.studentnum And C.coursenum=B.coursenum Order By A.sname

10.查询任何一门课程成绩在70分以上的学生的姓名、课程名称、分数
和第九题类似只需加上一个分数的限制条件就可以了,sql语句如下

Select A.sname,B.cname,C.score From t_student A,t_course B,t_score C
Where
A.studentnum=C.studentnum And C.coursenum=B.coursenum And C.score>70
Order By A.sname
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题 sql