快好知 kuaihz

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

本篇旨在将实务中最常出现的详细情况进行说明,从而解决产品经理80%的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如下:

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

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

1. group by

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

2. 聚合函数

3. having子句

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

二、字段选择(select)

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

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

三、结果呈现(order by)

和excel一样,可以用多个字段排序

关键字desc表示降序排列

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

四、后续学习

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

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

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

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

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:业务查询  业务查询词条  中篇  中篇词条  SQL  SQL词条  学会  学会词条  经理  经理词条  
产品

 UI、UX傻傻分不清楚?来一份清...

设计是一个相当广义而模糊的术语。当有人说“我是一个设计师”时,你很难知道他每天做些什么。设计涵盖了多领域和多职责,从工业设计(汽车、家具)到印刷设计(杂志,其他...(展开)