最近找实习基本上每个岗位都有SQL考试内容,有的岗位(滴滴国际化)是笔试题,有的岗位(抖音数据BP和快手)是面试现场做题。主要考察点包括group by
,case when
,order by ... limit ...
这些。下面列几道题的解法:
第一题(滴滴笔试)
学生表(tb_student)
学生姓名 (name) | 学号 (id) | 班级 (class) | 入学时间 (in_time) | 年龄 (age) | 性别 (sex) | 专业 (major) |
---|---|---|---|---|---|---|
张三 | 2017C3301001 | 2017C3301 | 2017 | 18 | 男 | 计算机 |
学生成绩表(tb_score)
学号 (id) | 课程 (course) | 分数 (score) |
---|---|---|
2017C3301001 | 数据库 | 75 |
- 筛选出2017年入学“计算机”专业年龄最小的10位同学名单(姓名、学号、班级、年龄):
select name, id, class, age
from tb_student
where major = ‘计算机’ and in_time = 2017
order by 年龄 asc,
limit 10;
- 统计每个班同学各科成绩平均分大于80分的人数和人数占比
select tb_student.class,
sum(case when avg_score>80 then 1 else 0 end) as num,
sum(case when avg_score>80 then 1 else 0 end)/count(tb_student.id) as prop
from tb_student as a
left join(
select id, avg(score) as avg_score
from tb_score
group by id)