SQL数据分析7:数据聚合与聚合函数
SQL数据分析7:
数据聚合与聚合函数
关注回复“7”获取SQL必知必会
根据聚合类别分组,使用聚合函数计算统计结果
使用SQL聚合句子与聚合函数获得统计数据
可以实现聚合结果过滤,排序与选取
数据聚合语法:
SELECT <聚合类别>, <聚合函数()> FROM <表名称>
GROUP BY<聚合类别>
聚合函数是对一组值进行计算,并返回单个值的函数。
常见聚合函数
COUNT(列名称):返回指定列中的行数(不包括NULL)
COUNT(*):返回指定列中的行数(包括NULL)
COUNT( DISTINCT列名称):函数返回指定列的不同值的数目
注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。
SUM(列名称):返回指定数值列的总数(不包括NULL)
AVG(列名称):返回指定数值列的平均值(不包括NULL)
MIN/ MAX(列名称):返回指定列中最小/ 最大值(不包括NULL)
类别聚合与聚合计算-GROUP BY
使用GROUP BY与聚合函数获得统计数据
我们可以使用聚合函数,解决新的问题。
此时,运行产品信息表格,发现每一个供应商供应了多种产品,我们可以使用聚合函数,把这些供应商的账号聚合起来。
需求:根据产品信息表,获取每一个供应商单价30以下产品的产品数目及平均单价
翻译成大白话,就是要从信息表中,把多个供应商聚合起来,过滤出小于30元的产品名称,并且数一数这些产品的品种数量,再算出平均单价。
这一个需求中,可以分解为4个动作。
要用到SELECT <聚合类别>, <聚合函数()> FROM <表名称> GROUP BY<聚合类别>,其中聚合函数需要用到COUNT(*)返回指定列中的行数,AVG(列名称)返回指定数值列的平均数。并且把这两个公式代进去,操作如下:
第一步:聚合供应商号码;
此时做了第一步,我们把分散的供应商信息聚合起来了,由多对多的关系,变成了多对一。且过滤了产品单价小于30的产品。
接下来,进行函数插入,要计算供应商的总数,作为一个列单独存放;要求出平均值,作为一个列单独存放。
注意看,这个错误示范是标点问题。可见,平时就要养成良好的SQL书写习惯。
点击运行按钮,我们可以得到:
返回的数据中,聚合了供应商号码,计算了产品价格小于30的产品种类数,并且计算了这些产品的平均单价,至此,需求达成。
下面我们再演示COUNT函数的另外2种用法:COUNT(列名称)和COUNT( DISTINCT列名称)。
需求:计算出有多少种饼干。
这个需求直接使用COUNT(列名称)函数即可达成。
通过select count 列名称as 别名 from 表名称 where 列名称 运算符 值,,其中运算符采用模糊搜索like,含有饼干二字即可我们可以得到如下结果:
返回的值可以看到,饼干类目的产品有5种,达成需求。
需求:计算出产品的种类数量。
这个需求,底层逻辑是因为不同的产品有不同的产品号码,这个号码本身是唯一的,所以我们只需要算出有多少行即可。操作如下:
去掉了WHERE过滤语句,我们就能算出行数。
返回的结果显示,一共有79,也就一共有79种产品,成功达成需求。
需求:计算出不同供应商的数目。
在供应商号码这列,有多个值是重复出现的。此时需要用到删除重复行的语句,不记得的同学可以复习一下,输入count (distinct 列名称),操作如下:
点击运行按钮,得到下列结果:
返回的值为30,是已经删除重复行得到的结果,30表示,信息表中不同的供应商的数目,达成需求。
COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)
SELECT count (column_name) FROM table_name
COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name
疑问: null空值在什么情况下可以计入呢?知道的同学也可以留言。
标点符号:注意看,这里的SELECT后面的聚合类别和GROUP BY聚合类别是同一个类别名称,另外FROM前面的2个函数也有标点符号的要求,否则会报错。下面是错误示范:
关键词:SELECT count 作为关键词,在2016版mySQL是小写的,大写系统会报错,可能不同的版本有对应不同的书写标准,同学们注意一下。另外在今天学习的第三个需求中,模糊搜索含有“饼干”的产品名称,值为 ’%饼干%’,前后都要有百分号,代表值可能出现在前面,也有可能出现在后面。例如“饼干A”、“威化饼干”。下面是错误示范:
今天我们学习了数据聚合,多种场景可以落地,尤其是count函数,大家可以实践起来。SQL数据分析学习在于持之以恒,忌讳三天打鱼两天筛网,祝你早日实现业务目标。