Bootstrap

30道经典SQL面试题讲解(1-10)

本篇节选自书籍《对比Excel,轻松学习SQL数据分析》一书,主要讲解数据分析面试中常见的30道SQL面试题。

1 查询每个班学生数

现在有一张全校学生信息表stu_table,这张表存储了每位学生的id、name(姓名)、class(班级)、sex(性别)以及一些其他信息,现在我们想知道每个班有多少学生,该怎么实现呢?

stu_table表如下所示:

id name class sex
4 张文华 二班
3 李思雨 一班
1 王小凤 一班
7 李智瑞 三班
6 徐文杰 二班
8 徐雨秋 三班
5 张青云 二班
9 孙皓然 三班
10 李春山 三班
2 刘诗迪 一班

自己先想一下代码怎么写,然后再参考我的代码。

select 
    class
    ,count(id) as stu_num
from
    demo.stu_table
group by
    class

解题思路:

我们是要获取每个班的学生数,首先需要对班级进行分组,使用的是group by;然后再对每个组内的学生进行计数聚合运算,使用的count。最后运行结果如下:

class stu_num
二班 3
一班 3
三班 4

2 查询每个班男女学生数

还是前面的全校学生信息表stu_table,现在我们想知道每个班男生女生分别有多少个?

自己先想一下代码怎么写,然后再参考我的代码。

select 
    class
    ,sex
    ,count(id) as stu_num
from
    demo.stu_table
group by
    class
    ,sex

解题思路:

与第一题不同的是,不仅需要每个班级的信息,还需要每个班级里面男女生分别的信息,主要考察的就是按照多列分组聚合的知识,直接在group by后面指明要分组的多列即可,且列与列之间用逗号分隔开。最后运行结果如下:

class sex stu_num
二班 2
一班 3
三班
;