莫愁前路无知己,天下谁人不识君。。。。
关于一道SQL面试题的问题争议
上一篇 /
下一篇 2017-04-15 15:45:11
/ 个人分类:软件面试问题
--------用一条SQL语句查询出每门课都大于80分的学生姓名-------面试经常被问到,其实答案并不是很关键,关键是该题所引发的思考,好了,还是先看题,有一张分数表test:name course mark张三 语文 95张三 数学 82
李四 语文 74
李四 数学 96
李四 英语 92
王五 语文 72
王五 数学 100
way1:select name from test group by name having min(mark)>80;
way2:select distinct name from test where name not in (select distict name from test where mark <=80);
way3:select distict name from test A where not exists (select course from test where mark<80 and name = A.name) #此处course 可以用* 代替
way4:select name from test group by name having name not in (select name from test where mark<=80);
way5:select name from test group by name having count(mark)=sum(case when mark>80 then 1 else 0 end);
基本上以上5中方法可以应付这道题,但是,你有没有发现张三的英语没有统计,缺考啦,如果张三有英语课程,但没有分数(不是0分),结果会是怎样?查出来的结果是你想要的吗???
行转列:
select name ,
sum(case when course = "语文" then mark end)"语文",
sum(case when course = "数学" then mark end)"数学",
sum(case when course = "英语" then mark end)"英语",
from test group by name;
相关阅读:
- SQL执行过程中的性能负载点 (资深梦游, 2017-7-10)
- 性能测试常用sql语句 (资深梦游, 2017-7-14)
- 软件测试从业者,需要掌握的数据库知识 (xuquan, 2017-8-17)
- 不用再学SQL语言了,Saleforce用自然语言就能在数据库中查询 (资深梦游, 2017-8-31)
- SQL语句 (wudemin, 2017-9-18)
- SQL语句大全 (wudemin, 2017-9-18)
- 关于SQL注入的一些技巧分享 (资深梦游, 2017-10-10)
- SQL语句 (迷途的二哈, 2017-11-23)
- SQL Server自动循环归档分区数据脚本 (zaza9084, 2017-11-30)
- 动态SQL中不同变量的写法总结 (zaza9084, 2017-12-11)
收藏
举报
TAG:
SQL
sql
面试