groupby函数_SQL数据分析GROUP BY语句这样用

本文详细介绍了SQL GROUP BY语句的作用,如何与聚合函数如count(), sum(), avg()等配合使用,以及如何根据多个字段分组。通过实例演示了如何处理未存在的分组字段和使用别名的情况。适合数据分析初学者快速掌握分组统计技巧。
摘要由CSDN通过智能技术生成

GROUP BY语句从英文的字面意义上理解就是根据(by)一定的规则进行分组(Group)数据处理或统计。

所以group by语句通常与聚合函数一起使用。

聚合函数是什么意思?我们来看聚合函数英文单词aggregate function,function是函数,毋庸置疑。aggregate可翻译为总数、总计、合计,所以两个组合起来可以翻译为汇总函数。是谁翻译为聚合的?站出来!

4322a8fa7350c46b513e4df676b18feb.gif

所以知道它是汇总统计的意思就好了,常用聚合函数包括计数count()、求和sum()、平均数avg()、最大值max()、最小值min()。

为了方便大家练习,我们直接使用之前介绍过的SQL在线模拟器,没看过的可以看这里

SQL在线模拟器

用到的数据表是user这张表

250ccc930e4c07f3df39a766c5c7d6db.png

我们先看个例子,要统计所有的学生数,SQL语句如下

SELECT count(*) FROM user

f8b2c31213445b92c2582a9d240ea6ad.png

这个时候只使用到了聚合函数count。

那如果你要按性别gender分组统计学生数,这个时候就要用到group by了,SQL语句如下

SELECT gender,count(*) FROM user

group by gender

388565d9616f750c6a0c9537890b05a1.png

看到没有,到了敲黑板的时候了

1041bf13fd315da1fd08574cdcde24cb.gif

按什么分组,就直接在group by后面加上对应的分组字段,同时,SELECT后面、聚合函数前面也要加上对应的分组字段,这样才能正常显示。

如果你有多个需要分组的字段,直接使用逗号隔开即可,例如

SELECT gender,students,count(*) FROM user

group by gender,students

d34532a571831ee4778feae18fd89509.png

在这个例子中,这样做没啥意义,因为数据、字段都太少,没其他字段好举的,知道意思就行了。

有时候,需要分组的字段在原数据表里面没有现成的,需要我们先经过处理后得到新字段再进行分组,例如要对分数段进行分组统计人数

SELECT (case when  score>=90  then "优秀" else  "合格"  end)  as 评价,count(*) FROM user

group by  (case when  score>=90  then "优秀" else  "合格"  end) 

fa9b7f49cf30f81fce30c7412fd27328.png

这时group by不能写别名“评价”,必须直接把处理的SQL语句直接写到group by后面,因为SQL的执行顺序如下:

1.FROM → 2. WHERE →3. GROUP BY →4. SELECT

看到没有GROUP BY先于SELECT执行,别名“评价”还没执行生效呢,所以需要把处理的SQL语句直接写到group by后面。

前面说了都是与聚合函数一起使用的,当然也可以只GROUP BY,不加聚合函数。只GROUP BY相当于就是对只GROUP BY的字段进行去重处理,得到不重复的唯一数据,SQL语句如下:

SELECT gender FROM user

group by gender

077a6905f590e59a60594912192f941c.png

SELECT students,gender FROM user

group by students,gender

f85a7e026b785d32659a0b0cf2b016fe.png

-------------------------------------

还在为数据分析该如何学而烦恼的朋友,赶紧学起来,跟着数据分析入门与进阶线路图学,一步一步进阶数据分析大师。

6185fe288bf20d25c826a906fdb31566.png

量身打造,少走弯路,6~8折限时优惠、永久有效,随到随学,Q群答疑

A系列是数据分析入门必学、必备课程

非编程学习路线一(SPSS方向):A+B 

非编程学习路线二(Modeler方向):A+C

编程学习路线一(Python方向):A+D

编程学习路线二(R方向):A+E

点“阅读原文”进入课程页面学习

c37f3b7f19353fed491d2acd3b4d46be.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值