sql面试题及答案总结

这些都是笔试的时候遇到的,其实面试公司也是在网上找的题目,在网上都搜索得到的,我把总结遇到的总结一下。

1.求每门成绩都大于80的学生名字。

name kecheng fenshu 

张三 语文 81 
张三 数学 75 
李四 语文 76 
李四 数学 90 
王五 语文 81 
王五 数学 100 

王五 英语 90

答案:select distinct name from tb_user where name not in (select name from tb_user where fenshu < 80);

2.删除除了自动编号不同,其他都相同的学生冗余信息

id 姓名 课程名称 分数
1 张三 数学 69
2 李四 数学 89
3 张三 数学 69

答案:

create table tb_temp as select min(id) id from tb_course group by kecheng,name,fenshu;

delete from tb_course where id not in (select id from tb_temp );

注意:我使用的mysql数据库,直接写

delete from tb_course where id not in (select min(id) id from tb_course group by kecheng,name,fenshu);  报错了!!!

3.已存在一张如下的表:

年  季度  销售额

2016  1  2000

2016  2  2500

2016  3  3000

2016  4  2000

2017  1  3000

2017  2  4000

2017  3  5000

2017  4  6000

写一个sql语句查询出如下所示的效果:

年  第一季度  第二季度   第三季度   第四季度 

2016  2000   2500   3000  2000

2017  3000   4000   5000  6000

答案:

select year, 
sum(case when quarter='1' then sales else 0 end)'第一季度',
sum(case when quarter='2' then sales else 0 end)'第二季度',
sum(case when quarter='3' then sales else 0 end)'第三季度',
sum(case when quarter='4' then sales else 0 end)'第四季度'
 from tb_sale group by year;

4.

已存在一张如下的表:

季度  销售额

1  2000

2  2500

3  3000

4  2000

写一个sql语句使查询结果如下(销售额累加):

季度  销售额

1  2000

2  4500

3  7500

4  9500






猜你喜欢

转载自blog.csdn.net/zhangzhangjava/article/details/77541297