经典SQL面试题
来源:互联网 发布:域名不支持生成短网址 编辑:程序博客网 时间:2024/05/16 12:01
以下题目都在MySQL上测试可行,有疏漏或有更优化的解决方法的话欢迎大家提出,我会持续更新的:)
- 有三个表,如果学生缺考,那么在成绩表中就不存在这个学生的这门课程成绩的记录,写一段SQL语句,检索出每个学生缺考的科目。
A 学生表(student)
字段1 学生号(s_id)
字段2 学生名(s_name)
B 科目表(course)
字段1 科目号(c_id)
字段2 科目名(c_name)
C 成绩表(grade)
字段1 成绩号(g_id)
字段2 学生号(s_id)
字段3 科目号(c_id)
字段4 成绩(score)select * from student join course left join grade on student.s_id=grade.s_id and course.c_id=grade.c_id where grade.score is null;
- 有如下表:
日期(rstime)结果(result)2005-05-09胜2005-05-09胜2005-05-09负2005-05-09负2005-05-10胜2005-05-10负2005-05-10负
如果要生成下列结果,该如何写sql语句?
日期胜负2005-05-09222005-05-1012select rstime,sum(case result when '胜' then 1 else 0 end)as 胜,sum(case result when '负' then 1 else 0 end)as 负 from result group by rstime;
- 用一条SQL语句,查询出成绩表(grade)每门课都大于80分的学生姓名
namecoursescore张三语文81张三数学75李四语文76李四数学90王五语文81王五数学100王五英语90select distinct name from grade where name not in (select distinct name from grade where score<=80)
- 原表:courseidcoursenamescore1java702oracle903xml404jsp305servlet80
为了方便阅读,查询此表后的显示结果如下(及格分数为60分):
courseidcoursenamescoremark1java70pass2oracle90pass3xml40fail4jsp30fail5servlet80passselect *,case when score>=60 then 'pass' else 'fail' end as 'mark' from temp;
- 学生表(stu),如下:
自动编号学号姓名课程编号课程名称分数12005001张三0001 数学6922005002李四0001 数学8932005001张三0001 数学69
删除除了自动编号不同,其他字段都相同的学生冗余信息。create table temp as select 自动编号 from stu group by 学号,姓名,课程编号,课程名称,分数;delete from stu where 自动编号 not in (select 自动编号 from temp);
- 学生表S,课程C,学生课程表SC,学生可以选修多门课程,一门课程可以被多个学生选修,通过SC表关联:(SQL)
1)写出建表语句;
2)写出SQL语句,查询选修了所有选修课程的学生;
3)写出SQL语句,查询选修了至少5门以上的课程的学生。
1、建表语句
S表:create table s(
id int not null primary key,
name varchar(20)
);
C表:create table c(
id int not null primary key,
cname varchar(20)
);
SC表:create table sc(
sid int not null,
cid int not null,
foreign key(sid) references s(id),
foreign key(cid) references c(id)
);
2、写出SQL语句,查询选修了所有选修课程的学生
select stu.id,stu.name from s where (select count(sid) from sc where sid = stu.id) = (select.count(id) from c);
3、写出SQL语句,查询选修了所有选修课程的学生
select stu.id,stu.name from s where (select count(sid) from sc where sid = stu.id)>=5;
转自:http://www.cnblogs.com/kcher90/archive/2013/03/13/2957932.html
- 经典SQL面试题
- 经典SQL面试题
- SQL经典面试题
- SQL经典面试题
- SQL经典面试题
- 经典SQL面试题
- 经典sql面试题
- 经典sql面试题
- 一题四解:SQL经典面试题
- 经典Sql面试题收集!!
- SQL面试题[经典收录]
- SQL面试题[经典收录]
- 经典Sql面试题收集!!
- 经典Sql面试题收集!!
- 经典Sql面试题收集!!
- 经典Sql面试题收集!!
- 经典Sql面试题收集!!
- 经典Sql面试题收集!!
- Redis VS memcached
- 用Java向数据库中插入大量数据时的优化
- C++ reinterpret_cast,const_cast等 显式类型转换总结
- Windows下GIT的安装与配置
- 模拟AndroidPN Client(2)——XmppManager简析和模拟客户端
- 经典SQL面试题
- eclipse下启动tomcat出现Setting property 'source' to 'org.eclipse.jst.jee.server: '错误的解决办法
- High-Throughput, Thread-Safe, LRU Caching
- 两分钟学会在GitHub托管代码
- 如何查看oracle的sid
- 源代码管理器VSS (Visual Source Safe 2005) 用法详解
- windows下安装python环境以及Myeclipse安装pydev
- 比较全面的gdb调试命令 .
- django不用在数据库中创建新的user表而使用它的后台管理功能