以下题目都在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-09 2 2
2005-05-10 1 2
select 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分的学生姓名
name course score
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
select distinct name from grade where name not in (select distinct name from grade where score<=80)

原表:
courseid coursename score
1 java 70
2 oracle 90
3 xml 40
4 jsp 30
5 servlet 80
为了方便阅读,查询此表后的显示结果如下(及格分数为60分):
courseid coursename score mark
1 java 70 pass
2 oracle 90 pass
3 xml 40 fail
4 jsp 30 fail
5 servlet 80 pass
select *,case when score>=60 then 'pass' else 'fail' end as 'mark' from temp;

学生表(stu),如下:
自动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 张三 0001   数学 69
2 2005002 李四 0001   数学 89
3 2005001 张三 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;

SQL面试积累的更多相关文章

  1. 一道SQL面试例题 if...else 与聚集函数

    晚上回来,同学说面试遇到了一个SQL面试题目,自己做了一下,总结总结. 题目如下: 下面是产品数据表(产品id,颜色col,数量num),其中每种产品有1~2种颜色. 求每种产品各颜色的数量差值(对于 ...

  2. sql 的积累

    sql的积累 By:山高似水深 原创 转载注明出处 .REVERSE() 反转 例如: Hive 可用 2016年12月3日11:31:59 2.instr(str,'.')位置 结果:得出在str中 ...

  3. SQL的积累

    SQL的积累学习(不常用的经常会忘记,所以以后用到的就会记在下面): --新增字段alter table t_Student add Test varchar(200)--删除字段alter tabl ...

  4. Sql面试常考题(持续添加)

    最近萌生换工作的念头,于是上网下载了一些公司的面试题,重新看了面试题中的Sql部分,这些查询题有时候只是兜一个弯角来考,对于给EF惯坏的孩子来说还是有点难度的(给面试官鄙视了几下的结果),所以列出最近 ...

  5. sql - 面试

    一,关于 group by 表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 负 200 ...

  6. SQL常见问题积累

    SQL积累--仅适用于SQL Server 1.sql中,字符串保存序号,按照数字顺序进行排序 ))),) asc --householdNo 为要排序字段 2.控制小数位数 ,),,)))+'%' ...

  7. sql面试

    1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name   kecheng   fenshu 张三     语文       81张三     数学       75李四     语文   ...

  8. SQL面试笔试经典题(Part 2)

    本文是在Cat Qi的原贴的基础之上,经本人逐题分别在MySql数据库中实现的笔记. 参考原贴:http://www.cnblogs.com/qixuejia/p/3637735.html 01 问题 ...

  9. SQL Server 积累

    2016-11-24 sql语句修改某表某字段的数据类型和字段长度: 问题是在修改老功能中暴露出来的,我修改了图片上传功能,结果报图片路径超出数据库字段规定长度,我检查数据库后发现之前设计数据库的人将 ...

随机推荐

  1. 模态窗口插件之Jbox

    $.jBox.tip("报损数量不能大于库存数!", 'error'); $.jBox.tip("请选择要报损的产品", "warn"); ...

  2. Linq之Linq to XML

    目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将wor ...

  3. WCF入门 (14)

    前言 上周去面试,跪了,这一年没什么长进,还是挺惭愧的. 得到的评语是:想的太多,做的太少. 做了一份面试题,最后一题是数据库的,写个查询.要查出Score有两次及两次以上超过79的Name和他的最高 ...

  4. AngularJS - 服务简介

    服务是AngularJS中非常重要的一个概念,虽然我们有了控制器,但考虑到其生命实在脆弱,我们需要用到服务. 起初用service时,我便把service和factory()理所当然地关联起来了. 确 ...

  5. EF,MVC相关项目请参见→

    End_Test和YM_EF抽象工厂   这两个项目

  6. words in view Moqui resource code

    annotation:注释 注解 documentation:文件  证明文件 embed:嵌入 context:环境  上下文 explicity: 明确的 明白的 conversion: 转化

  7. make xconfig时,出现“Unable to find any QT installation"错误

    在make menuconfig的时候,提示是找不到libncurses,最后其实是找不到libncurses-dev,又因为debian系统装的是libncurses5,所以装了libncurses ...

  8. Spring3.2.2之后不赞成使用queryForInt

    原来: public int getMatchCount(String username,String password){ String sql="select count(*) from ...

  9. Java 对象的串行化(Serialization)

    1.什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复.我们把对象的这种能记录自己的状态以便将来再生的能力.叫作对象的持续性(pe ...

  10. ISO 基础之 (十三) protocol 协议

    一 简绍 protocol,简单来说就是一系列不属于任何类的方法列表,其中声明的方法可以被任何类实现.这种模式一般称为代理(delegation)模式.通过Protocol定义各种行为,在不同的场景采 ...