数据产品经理养成记(五):汇总分析

学会了如何查找数据后,接下来就要对数据进行分析处理,比如求和、平均值、加总等等。这些对数据的加工处理通过汇总函数来实现。汇总函数在之前的两篇文章中都有涉及,这里采用概念--案例--总结的方式,集中介绍一下。

1.什么是汇总函数?

函数是SQL里的关键字,是一种运算命令。

通常来说,函数与字段名称或表达式联合使用,处理输入的数据并产生结果。SQL包含多种类型函数,其中汇总函数为SQL提供合计信息,比如计数、总和、平均等。

常见的汇总函数有以下几种:

count:求某一列的行数

sum:对某列数据求和

avg:求某列数据的平均值

max:求某列数据的最大值

min:求某列数据的最小值

注意:

1. 如果汇总函数后面有null(空值),那么都会把空值排除在外进行计算。

2.如果要计算所有的行(包括空值的行),一般用星号表示,例子如下:

select 姓名,count(*)

from student;

3.sum、avg函数,只能对数值类型的列进行计算,否则会报错。

count、max、min函数,可以对任何类型计算。

举个例子说明一下,这里有一张名为“student”的表,表里面的有一些学生和课程相关的信息,如下:

1.你想计算姓名这一列都多少行,需要使用‘count’函数,写法如下:

select count(姓名)

from student;

2.计算成绩这一列总和,写法如下:

select sum(成绩)

from student;

3.计算成绩这一列平均值,写法如下:

select avg(成绩)

from student;

4.计算成绩这一列的最大值、最小值,写法如下:

selectmax(成绩),min(成绩)

fromstudent;

可以发现汇总函数的写法基本相似。通常来说,汇总函数是一种比较简单的函数,不会单独使用,一般都要结合其他函数(group by等)才能更好的达到分析效果。

2.数据分组函数

汇总函数是按照某一列对数据进行计算,比如计算【姓名】列的总数量,现在如果要看的细一点,分别计算男生、女生的总人数,怎么实现呢?这里就需要用到分组函数,看下面这张表:

上表一共有三行数据,通过分组函数(‘group by’)来实现分组统计。‘group by’函数一般和汇总函数一起使用。对应的写法如下:

select 性别,count(*)

from student

group by 性别;

注意:

1.上面语句的运行顺序是:第二行--第三行--第一行,也就是先选择表,再按照条件对数据分总,最后计总显示出来。

再举一个例子:

你想统计出生日期大于‘1990-01-02’的男生总数、女生总数,该如何写SQL语句?先写出分析思路:

筛选出出生日期大于‘1990-01-02’的数据:where 出生日期 > 1990-01-02’

将数据按照性别分组:group by 性别

分别计算每一组的人数:count 性别

把上面的分析思路整理成SQL语句,如下:

select 性别,count(*) as 学生人数

from student

where 出生日期 > 1990-01-02’

group by 性别;

以上语句运行的结果如下:

3.对分组结果指定条件

上个栗子,你统计出了出生日期大于‘1990-01-02’的男生总数、女生总数后,只想显示男生的数据,该如何写语句呢?可以使用‘having’语句对分组结果,指定条件,写法如下:

select 性别,count(*) as 学生人数

from student

where 出生日期 > 1990-01-02’

group by 性别

having 性别 = 男;

注意:

这里为什么不用‘where’子句来指定条件?因为where只能指定行的原始数据。

‘having’,用于对分组以后数据,指定条件。

4.对查询结果排序

统计出数据后,为了方便观察,通常需要对数据进行排序,简单的排序有两种,升序、降序。我们在excel中都使用过类似的功能,那么在SQL中如何实现?

在SQL通过‘order by’函数来实现,一般有两种排序,降序(desc):从大到小,升序(asc):从小到大。

举个例子:

现在有一张成绩表‘score’,如下。现在你想计算出平均成绩大于80分的课程,并由高到低排列,该如何写函数?

我们先写出分析思路,如下:

对成绩按照课程号分组:group by 课程号

求课程的平均值:avg (成绩) as 平均成绩

平均成绩大于80分: having 平均成绩 >80

由高到低排列(降序):order by 平均成绩 desc

把上面的分析思路整理成SQL语句,如下:

select 课程号,avg(成绩) as 平均成绩

from score

group by 课程号

having avg(成绩) > 80

oorder by 平均成绩 desc;

注意:

使用‘order by’语句的时候,如果查询的列包含空值,空值会在查询结果的开头展示。如果数据库有大量数据,你只想返回一部分数据的时候,该怎么办?可以使用limit,从查询结果中,展示指定行的数据。写法如下:

select *

from score

limit 2;

意思就是只取前两行数据。

汇总分析就到这里了,关于SQL的内容还有最后一节:复杂查询,讲完了会分享一案例和数据分析的基本思路。其实SQL学习来并不很很难,它就是一门工具,你使用的越多就会越熟练。要多多练习!

欢迎持续关注,公号:数据产品经理之路。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容