vlambda博客
学习文章列表

SQL数据分析7:数据聚合与聚合函数

SQL数据分析7:

数据聚合与聚合函数

关注回复“7”获取SQL必知必会


0 1
什么是数据聚合?

根据聚合类别分组,使用聚合函数计算统计结果

使用SQL聚合句子与聚合函数获得统计数据

可以实现聚合结果过滤,排序与选取


0 2
数据聚合与聚合函数

数据聚合语法:

SELECT <聚合类别>, <聚合函数()> FROM <表名称>

GROUP BY<聚合类别>

聚合函数是对一组值进行计算,并返回单个值的函数。



常见聚合函数

COUNT(列名称):返回指定列中的行数(不包括NULL

COUNT*):返回指定列中的行数(包括NULL

COUNTDISTINCT列名称):函数返回指定列的不同值的数目

注释:COUNT(DISTINCT) 适用于 ORACLE Microsoft SQL Server,但是无法用于 Microsoft Access


SUM(列名称):返回指定数值列的总数(不包括NULL

AVG(列名称):返回指定数值列的平均值(不包括NULL

MIN/ MAX(列名称):返回指定列中最小/ 最大值(不包括NULL

类别聚合与聚合计算-GROUP BY

使用GROUP BY与聚合函数获得统计数据


我们可以使用聚合函数,解决新的问题。

此时,运行产品信息表格,发现每一个供应商供应了多种产品,我们可以使用聚合函数,把这些供应商的账号聚合起来。

  


0 3
具体操作

需求:根据产品信息表,获取每一个供应商单价30以下产品的产品数目及平均单价

翻译成大白话,就是要从信息表中,把多个供应商聚合起来,过滤出小于30元的产品名称,并且数一数这些产品的品种数量,再算出平均单价。

这一个需求中,可以分解为4个动作。

要用到SELECT <聚合类别>, <聚合函数()> FROM <表名称> GROUP BY<聚合类别>,其中聚合函数需要用到COUNT*)返回指定列中的行数,AVG(列名称)返回指定数值列的平均数。并且把这两个公式代进去,操作如下:

第一步:聚合供应商号码;

 SQL数据分析7:数据聚合与聚合函数

此时做了第一步,我们把分散的供应商信息聚合起来了,由多对多的关系,变成了多对一。且过滤了产品单价小于30的产品。

接下来,进行函数插入,要计算供应商的总数,作为一个列单独存放;要求出平均值,作为一个列单独存放。

SQL数据分析7:数据聚合与聚合函数

注意看,这个错误示范是标点问题。可见,平时就要养成良好的SQL书写习惯。

点击运行按钮,我们可以得到:

SQL数据分析7:数据聚合与聚合函数

返回的数据中,聚合了供应商号码,计算了产品价格小于30的产品种类数,并且计算了这些产品的平均单价,至此,需求达成。


下面我们再演示COUNT函数的另外2种用法:COUNT(列名称)和COUNTDISTINCT列名称)。

需求:计算出有多少种饼干。

这个需求直接使用COUNT(列名称)函数即可达成。

SQL数据分析7:数据聚合与聚合函数

通过select count 列名称as 别名 from 表名称 where 列名称 运算符 值,,其中运算符采用模糊搜索like,含有饼干二字即可我们可以得到如下结果:

SQL数据分析7:数据聚合与聚合函数

返回的值可以看到,饼干类目的产品有5种,达成需求。



需求:计算出产品的种类数量。

这个需求,底层逻辑是因为不同的产品有不同的产品号码,这个号码本身是唯一的,所以我们只需要算出有多少行即可。操作如下:

 SQL数据分析7:数据聚合与聚合函数

去掉了WHERE过滤语句,我们就能算出行数。

 SQL数据分析7:数据聚合与聚合函数

返回的结果显示,一共有79,也就一共有79种产品,成功达成需求。



需求:计算出不同供应商的数目。

在供应商号码这列,有多个值是重复出现的。此时需要用到删除重复行的语句,不记得的同学可以复习一下,输入count distinct 列名称),操作如下:

SQL数据分析7:数据聚合与聚合函数

点击运行按钮,得到下列结果:

 SQL数据分析7:数据聚合与聚合函数

返回的值为30,是已经删除重复行得到的结果,30表示,信息表中不同的供应商的数目,达成需求。



0 4
知识点

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空值在什么情况下可以计入呢?知道的同学也可以留言。


0 5
温馨提示

标点符号:注意看,这里的SELECT后面的聚合类别和GROUP BY聚合类别是同一个类别名称,另外FROM前面的2个函数也有标点符号的要求,否则会报错。下面是错误示范:

SQL数据分析7:数据聚合与聚合函数

关键词SELECT count 作为关键词,在2016mySQL是小写的,大写系统会报错,可能不同的版本有对应不同的书写标准,同学们注意一下。另外在今天学习的第三个需求中,模糊搜索含有“饼干”的产品名称,值为 %饼干%,前后都要有百分号,代表值可能出现在前面,也有可能出现在后面。例如“饼干A”、“威化饼干”。下面是错误示范:

 

今天我们学习了数据聚合,多种场景可以落地,尤其是count函数,大家可以实践起来。SQL数据分析学习在于持之以恒,忌讳三天打鱼两天筛网,祝你早日实现业务目标。

关注回复“7”获取SQL必知必会