• 公众号
  • 商务合作

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

1453 二月 来源:

本篇旨在将实务中常出现的详细情况进行说明,从而解决产品经理80%的sql查询任务;希望对大家有帮助~

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

前言

之前我们已经用一个例子介绍了SQL的语法顺序和执行顺序,想必现在你已经知道了一个完整的SQL包括条件子句(关键字where)、分组查询(关键字group by)、字段选择(关键字select)和结果呈现(关键字order by)。本篇我们旨在将实务中常出现的详细情况进行说明,从而解决产品经理80%的sql查询任务

产品经理学SQL(二)一天学会用SQL解决业务查询问题系列共包括前中后三篇,建议学习时间为一天

想回顾之前内容的可以点击:

产品经理学SQL(一)一个小时上手SQL

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

条件子句(where)

1. 比较运算符(适用于区间)

比较运算符包括=(等于),>=(大于等于),<=(小于等于),!=(不等于),>(大于),<(小于)。

例如:查询年龄sage小于30的学生

where sage < 30

2. 确定范围(适用于连续范围)

between … and …为取值限定了一个范围。

例如:查询年龄大于等于10小于等于20的学生

where sage between 10 and 20

3. 确定集合(适用于离散的少数值)

例如:插入年龄为10,20,30的学生

where sage in (10,20,30)

**in可以和not一起使用,表示不在这个区间的值

**where sage not in (10,20,30)

4. 字符匹配(模糊查询)

通过like关键字和正则表达式匹配,常用的通配符有%(任意个字符)和_(一个字符)。

例如:查询名字sname带“王”的学生

where sname like “%王%”

5. 判断是否为空值

通过is null关键字判断值是否为空。

例如:查询姓名sname不为空的学生

where sname is not null

6. 多个查询条件

用and(两个条件同时满足)和or(两个条件满足一个即可)

例如:查询年龄sage小于20且性别ssex为男的学生

where sage<20 and ssex=’男’

一、分组查询(group by&聚合函数&having子句)

分组查询实现了类似excel中数据透视表的功能,可以帮助我们对数据进行分层汇总,而我们对分层后的数据进行统计的时候需要用到聚合函数(也就是平均值、求和、大值和小值等),后我们对分层之后的数据筛选的时候需要用到having子句。

**where子句是对原始表做筛选的

**having子句是对分层汇总之后的结果做筛选的

回顾我们上一篇讲过的例子:在限定学生表学号小于等于6的一批学生中,查询每门课的高成绩(高成绩低于70分的课程不显示),然后根据课程高成绩降序排列取前两条记录。

查询的SQL如下:

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

回顾一下执行顺序,首先我们用where子句对原始数据做了学号id需要小于等于6的限制。然后我们用group by和max(score)聚合函数实现了对课程进行分层,求出每门课的高成绩,为了对聚合之后的结果作限制,我们用having子句只展示高分数大于等于70的记录。

关于这个例子详细解释可以回顾上篇文章,下面我们详细介绍每个部分的常用语句。

1. group by

group by不仅可以对一个字段进行分组,还能对多个字段进行分组。这和excel中的数据透视表一致。

2. 聚合函数

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

3. having子句

和where子句一致,只需注意是对聚合后的结果作限制

二、字段选择(select)

select比较灵活,我们不单单能选择原始数据表的字段,还能使用函数对字段进行计算,正如我们头名篇提到的,函数并不是重点,当你需要的时候百度或者问技术小哥就知道了。我们这里只简单介绍一下可以对字段进行计算。

例如:查询各学生的年龄(通过公式计算年龄)

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

三、结果呈现(order by)

  1. 和excel一样,可以用多个字段排序
  2. 关键字desc表示降序排列

例如:查询学生id和年龄,并先按照学号sid降序,再按照年龄sage升序排列

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

四、后续学习

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

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

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

希望学完这三篇后能助你系统地入门SQL~

 

作者:Tomocat,女朋友是产品经理的数据分析师。

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

题图来自 Unsplash,基于 CC0 协议。

爱盈利-运营小咖秀(www.aiyingli.com) 始终坚持研究分享移动互联网App运营推广经验、策略、全案、渠道等纯干货知识内容;是广大App运营从业者的知识启蒙、成长指导、进阶学习的集聚平台;

想了解更多移动互联网干货知识,请关注微信公众号运营小咖秀(ID: yunyingshow)

转载请注明:爱盈利 » 产品经理学SQL(二)一天学会用SQL解决业务查询问题(中篇)

京ICP备15063977号-2 © 2012-2018 aiyingli.com. All Rights Reserved.