研发案例 30道SQL经典面试题解析超全面! 来源: 发表时间: 2022-08-15 来源:火狐体育最新官网登录入口 作者:火狐体育app

  今天我们来讲讲SQL方面的知识点。对于绝大多数的数据分析师而言,SQL是面试时经常被问到的内容。

  我们先在Navicat当中创建表格并且插入数据,在Navicat当中创建表格并不难,点击新建表,然后输入字段名,并且规定好相应的数据类型即可,点击保存。

  这里的%表示任意字符串,例如小%则表示姓“小”的学生信息,而%小表示的是以“小”字结尾的学生姓名,而%小%代表的是学生姓名中带有“小”这个关键字。

  我们想要看一下报名参加“英语”课的学生有几人,我们知道“英语”课程对应的课程号是0003,所以用count函数方法来计算次数即可:

  但要是我们想要查询一下每一门课程的最低、最高分以及平均分,可以通过group by关键字来执行,按照“课程号”进行分组汇总:

  假设我们打算查询平均分大于80分的学生,首先我们要计算每个学生的平均成绩,然后在此基础之上挑出80分以上的部分,所以可以group by 学号:

  同理,我们也可以根据“课程号”来进行分组,group by 课程号,然后挑选出例如平均分大于70分的部分:

  这次我们再添加一个字段最高分,通过max方法来进行统计,同时对平均分与最高分进行排序,当平均分相同的时候,就以最高分来进行排序:

  我们在order by后面再放一个字段表示当以字段1排序的时候碰到相同的情况下,就以字段2来进行排序。

  我们再来换一个字段,看一下选课超过两门的学生有哪些,我们首先是group by 学号,然后对“课程号”进行计数,挑选出满足条件的部分:

  下面我们来处理一个复杂的查询,找出分数都在80分以上至少两门课程的学生,列出他们的学号以及平均分,我们先来筛选出分数都在80分以上的学生:

  我们来看一下,对每位学生的总成绩进行统计并且进行排序是怎么来做的,我们用sum方法来统计每个学生的总成绩:

  然后我们再添加一个限制条件,例如挑选出总分在200分以上的数据,可以通过having关键词来执行:

  有时候我们需要写多层的SQL查询语句,一层的查询有时候显然不够用,例如我们想要查询出所有课程的成绩都是高于80分的学生学号与姓名,我们一层一层来分析,首先我们筛选出所有课程都高于80分学生的学号与成绩:

  再得到了学号以及成绩了之后,我们将学号这一列提取出来,去student这张表当中去寻找满足条件的:

  通常来说,嵌套式的查询是涉及到了多张表格的联合,例如我们想要查询出选课的数量小于3门课程的学生姓名与学号,首先我们先筛选出选课数量小于3门课程的学生学号:

  由于篇幅的限制,这里就不多说了,我们来看一下具体实践当中的操作,我们筛选出出生年份在1994年的学生有哪些,可以这么来操作:

  有时候我们在进行数据查询的时候需要用到多张表格,将多张表格联结起来进行操作,例如列出所有学生的姓名、选课的数量以及总分成绩,我们就需要用到多张表格了,我们可以先尝试着连接student和score这两张表:

  最后通过limit关键字来控制输出,上面的例子是两张表格的连接,我们也可以尝试三张表格的连接:

  我们同时可以在后面添加一些筛选条件,例如我们想要找出语文的成绩在85分以上的同学学号以及姓名,就可以这么做:

上一篇:18w 字的 SQL 优化大全 下一篇:为什么实时分析既需要NoSQL的灵活性又需要SQL系统的严格模式?
关注我们
©2022 火狐体育最新登录网址_官网app入口 京公网安备110177777720125 火狐体育最新登录网址|火狐体育app