这些SQL面试题,你能否在15分钟内完成?
来 源:数据分析与统计学之美
作 者:黄伟呢
这是别人发的一道MySQL面试题,要求你在15分钟内完成。一眼看过去,这张面试题并不是很难,反而很简单,但是你能不能很快做出来呢?
可以看到,最下方的第3题可能不太全,但是影响不大,看不见的那就先不管。

1、第一题
1.建表语句
create table test1(
id varchar(20),
name varchar(20)
) charset=utf8;
insert into test1(id,name)
values
("1001","张三"),
("1002","李四"),
("1003","王五"),
("1003","王五"),
("1004","陈六");
结果如下:

2.请用一条SQL语句,查询去重后的人员信息清单
select
id,name
from test1
group by id,name;
----------------------
----------或者---------
select
distinct(id),name
from test1
结果如下:

3.请用一条SQL语句,查询出存在重复记录的人员id
select
id,count(id) counts
from
test1
group by
id
having
counts >=2;
结果如下:

2、第二题
1.建表语句
# math_table表
create table math_table(
id int,
name varchar(20),
math_score int
) charset=utf8;
insert into math_table(id,name,math_score)
values
(1,"李明",83),
(3,"张建国",76),
(5,"王华",57);
=============================================
# english_table表
create table english_table(
id int,
name varchar(20),
english_score int
) charset=utf8;
insert into english_table(id,name,english_score)
values
(2,"陈斌",73),
(3,"张建国",65),
(5,"王华",89);
结果如下:

select
a.id,a.name,a.math_score,b.english_score
from
math_table a
join
english_table b
on
a.id = b.id
结果如下:

3.请用一条SQL语句,查询出参加了数学竞赛但是没有参加英语竞赛的学生的name清单
select
a.id,a.name,a.math_score
from
math_table a
left join
english_table b
on
a.id = b.id
where
b.english_score is null;
结果如下:

4.请用一条SQL语句,查询出两项竞赛得分均大于60分的学生的两项竞赛的平均分
select
a.id,a.name,(a.math_score+b.english_score)/2 as avg
from
math_table a
join
english_table b
on
a.id = b.id
where
a.math_score >=60 and b.english_score >=60;
结果如下:

小伙伴们答的怎么样呢?
对于SQL知识的学习,
我们现在有免费课程赠送。
— 爱数据双十一重磅福利 —
01
0元公开课——《零基础入门SQL数据分析》
免费学习+配套服务,以演练+实操+思维的方式深入浅出的讲解SQL在数据分析中的应用。

02
1元秒杀课——《数据仓库原理与数据建模》《电商数据分析进阶课》
《数据仓库原理与数据建模》课程是数据开发工程师必备:数据仓库原理、维度建模、建模工具,从而初步具备设计表、设计数据模型的能力。

《电商数据分析进阶课》课程主要针对于初中级数据分析师、数据运营、电商运营产品等电商行业岗位的进阶数据分析课程,通过理论和案例的学习理解,能掌握电商行业的数据分析能力及提高自己业务价值的方向。

同时,双十一爱数据×腾讯课堂还推出大型满减活动,最高立省970元,点击【主页】查看!
爱数据
让更多人拥有稳健的职业生涯