sql经典面试题?sql经典面试题及答案
上海商务ktv招聘 小费800到2500 接受新人
复制微信号
本文目录
SQL语句面试题
--查询所有同学的学号、姓名、选课数、总成绩;
selectS.Sid,Sname,选课数=COUNT(Cid),总成绩=SUM(Score)
fromStudentSjoinSconS.Sid=sc.Sid
groupbyS.Sid,Sname
--查询学过“叶萍”老师所教的所有课程的同学学号、姓名;
selectS.Sid,Sname
fromStudentSjoinSconS.Sid=Sc.Sid
joinCourseConC.Cid=Sc.Cid
jointeacherTonT.Tid=C.Tid
whereTname='叶萍'
groupbyS.Sid,Sname
havingCOUNT(distinctC.Cid)=(selectCOUNT(Cid)fromCoursejointeacheronCourse.Tid=teacher.TidwhereTname='叶萍')
--查询课程编号"002"的成绩比课程编号“001”课程低的所有同学的学号、姓名
selectSid,Sname
fromStudent
whereSidin(selectA.Sid
fromScAjoinScBonA.Sid=B.Sid
whereA.Cid=1ANDB.Cid=2ANDA.Score>B.Score)
--按平均成绩高到低显示所有学生的"数学"、"物理"两门课程的成绩,以下形式显示:学生ID,数学,物理,平均分
selectSid,数学=max(casewhenCname='数学'thenScoreend),物理=max(casewhenCname='物理'thenScoreend),
平均分=(max(casewhenCname='数学'thenScoreend)+max(casewhenCname='物理'thenScoreend))/2
fromScjoinCourseConSc.Cid=C.Cid
whereCnamein('数学','物理')
groupbySid
sql面试题
1、忍不住想说一句,因为第一题中的字段类型是【日期型】,而各种数据库操作日期型数据有不同的方法,没有一种共通的方法,所以脱离了数据库而言没有一种共通的sql。
2、select ID,NAME,ADDRESS,PHONE,LOGDATE from T
where ID in( select ID from T group by NAME having count(*)>1)
order by NAME;
3、delete from T where ID not in
(select min(id) from T group by name);
4、update T
set T.ADDRESS=(select E.ADDRESS from E where E.NAME=T.NAME),
T.PHONE=(select E.PHONE from E where E.NAME=T.NAME);
5、这个不同的数据库也有不同的处理方法,不能脱离数据库谈了。
如:SqlServer或者access可以使用 top
oracle可以使用 rownum等
---
以上,希望对你有所帮助。
sql的几个面试题
--1.查询全部学生的姓名和所学的课程名称及成绩
select s.Sname,o.Cname,c.Grade from Student s,enrolls c,Courses o where s.Sno=c.Sno and c.Cno=o.Cno
--2.找出所有学生的平均成绩和所学课程门数
select Sno,avg(grade) as'平均成绩',count(*) as'所学课程门数' from enrolls group by Sno;
--3.找出各课程的平均成绩,按课程号分组,且只选择学生超过3人的课程的成绩
select enrolls.Cno,cname,avg(grade) as'平均成绩' from enrolls,Courses where enrolls.cno=Courses.cno group by enrolls.Cno,cname having count(*)>=3;
--4.找出选修了全部课程的学生的姓名
select Sname from student where sno in(select sno from enrolls group by Sno having count(sno)=(select count(cno) from Courses))