产品经理学SQL(二)一天学会用SQL解决业务查询问题(上篇)

2018-12-28 15:33

产品经理学SQL(二)一天学会用SQL解决业务查询问题(上篇)



  回顾一下,上一篇文章我们已经知道了SQL语言的基本框架,并能完成简单的单表查询和双表连接查询。这篇文章希望能帮助你系统地入门SQL,从而解决产品经理80%的sql查询任务

  和上篇的一个小时入门SQL一样,这篇文章的建议学习时间为一天。如果没看过上篇文章或想回顾的可以点击:产品经理学SQL(一)一个小时上手SQL

  为方便学习,我们仍然使用上篇文章用到的学生表student和成绩表sc,为了模拟业务中复杂的查询任务,我们再引入课程表course和教师表teacher。

  熟练使用SQL的前提一定是先了解你的数据库表,现在花点时间看看这四张表的字段信息(描述每个字段的意义)和数据样例(给出部分真实数据),关于业务中用到表的结构可以找数据小哥拿。

  看到这你可能会瞬间头大,但是由于SQL语言是有执行优先级的,这给了我们分块讲解的机会,私以为这也是SQL语言易学的重要原因。

  为了解释清楚SQL语言的执行顺序和语法顺序,让我们先看看下面这个Hive单表查询的完整结构。

产品经理学SQL(二)一天学会用SQL解决业务查询问题(上篇)

  任何一个单表查询的SQL都可以分解成上述格式,实际上抽象化后的多表连接查询也可以分解成如上格式。从上到下是SQL的语法顺序(即你书写SQL的格式),而SQL真实的执行顺序如下:

产品经理学SQL(二)一天学会用SQL解决业务查询问题(上篇)

  举个简单的例子加深理解:SQL的语法顺序就像小说的插叙,而SQL真正的执行顺序就是小说的时间顺序。

  上面的讲解可能让你一知半解,在正式介绍各部分SQL语法前我们先通过一个实例复习上面SQL的执行顺序。

  例如,有这么一个业务查询任务:在限定学生表学号小于等于6的一批学生中,查询每门课的最高成绩(最高成绩低于70分的课程不显示),然后根据课程最高成绩降序排列取前两条记录。查询的SQL如下:

  如果用过数据透视表的话应该比较容易理解分组查询的概念,分组查询一般和聚合函数一起实现,例如查看每个班的平均成绩、查看每个学生的最高成绩或者查看每个班的最低成绩等分组信息。

产品经理学SQL(二)一天学会用SQL解决业务查询问题(上篇)

  在group by分组后紧跟着我们会选择需要呈现的字段,为了方便讲解,其实分组查询中呈现的图片已经是select的结果了。

  order by和limit都是为了修改最终呈现结果。order by首先执行,按照某个字段进行排序(desc 关键字表示降序),这部分和excel的排序很相似。最后我们使用limit来修改结果展示的条数。

产品经理学SQL(二)一天学会用SQL解决业务查询问题(上篇)

  本篇文章的目的主要是帮助非技术人员在初步知晓SQL语句的情况下在一天之内系统入门SQL,从而解决80%的sql查询问题。

  但是由于建议学习时间为一整天,全部内容置于一篇文章一方面过于冗长,另一方面影响读者趁热打铁(作者是上班族,更新比较慢哈望谅解~),因此我把一天学会用SQL解决业务查询问题分为上中下三篇。

  上篇已经介绍了SQL的语法顺序和执行顺序的区别并仔细剖析了SQL的执行顺序;中篇会详细介绍条件子句、分组查询和排序的细节;下篇会介绍表的连接和其他常用关键字:if、case when和ditinct等。

  本文由 @Tomocat 原创发布于人人都是产品经理,未经许可,禁止转载。

  人人都是产品经理(是以产品经理、运营为核心的学习、交流、分享平台,集媒体、培训、招聘、社群为一体,全方位服务产品人和运营人,成立8年举办在线+期,线+场,产品经理大会、运营大会20+场,覆盖北上广深杭成都等15个城市,在行业有较高的影响力和知名度。平台聚集了众多BAT美团京东滴滴360小米网易等知名互联网公司产品总监和运营总监,他们在这里分享知识、招聘人才,与你一起成长。