认识聚合函数
在数据分析过程中,我们经常需要对一组数据进行计算,求其最大值、最小值、平均值、总和及数量等,这种行为被称之为聚合分析;而用来实现聚合分析的函数,被称之为聚合函数;
聚合函数是对一组数据(一列或多列)进行处理,返回单个结果;而普通函数则通常是对一组数据中的每条记录进行处理,返回的是一组结果;
聚合函数可以再HAVING使用但不能再WHERE条件中使用;
在SQL中,常用的聚合函数如下:
MySQL聚合函数用法案例
以下案例需要用到的数据源(表名称:测试表)
【SUM()】汇总求和使用方法
案例:假设求汇总的数量是多少?
语法:SELECT SUM(数量) FROM 测试表
【as】一般是重命名列名或表名,为了查询方便美观,上面的语句可以理解将汇总求和的数据重新命名一个列名
【MAX】求最大值的使用方法
案例:求数量中最大值
语法:SELECT max(数量) as 最大值 FROM 测试表
将MAX()函数应用于文本数据时,会返回该列按照升序排列的最后一行
【MIN】求最小值的使用方法
案例:求数量中最小值
语法:SELECT min(数量) as 最小值 FROM 测试表
将MIN()函数应用于文本数据时,会返回该列按照升序排列的第一行。
【AVG】求平均值的使用方法
案例:求四舍五入后的数量的平均值
语法:SELECT ROUND(avg(数量),2) as 平均值 FROM 测试表
【ROUND()】四舍五入的函数,与Excel的用法大致相同
【count(*)】与【count(列名)】计数使用方法
在使用计数函数时,尽量不要使用【count(*)】语句,除非已经进行了条件筛选,例如使用WHERE子句等,因为运用【*】是进行全表扫描,运行速度会很慢容易出问题!
【count(*)】计数的使用方法
包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录。
案例:求数量在30以上的个数
语法:SELECT COUNT(*) as 计数 FROM 测试表 where 数量>30
【count(列名)】计数使用方法只包括列名指定列,返回指定列的记录数,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内
案例1:求姓名列的不重复个数
语法:SELECT COUNT(DISTINCT 姓名) as 不重复个数 FROM 测试表
注:【DISTINCT】用来去除查询结果中的重复记录的,可多列一并去重,所有的汇总函数都可以使用DISTINCT
案例2:求姓名与数量都不重复的个数
语法:SELECT COUNT(DISTINCT 姓名,数量) as 不重复个数 FROM 测试表
解释:使用DISTINCT多列去重,用count计数姓名与数量都不重复的个数
WHERE 补充
在讲条件查询语句时有了解AND与OR的用法【MySQL】条件语句,可以多条件查询,而今天补充的是IN的用法,实际是in语句是or语句的简便写法,用in来写相对更简洁。
以下案例需要用到的数据源(表名称:测试表)
【IN】在WHERE中的使用方法
案例:假设需要查询包含AA/BC/DW的数据
语法:SELECT * FROM 测试表 where 姓名 in ('AA','BC','DW')
注:文本用单引号,数值不用,条件之间用逗号隔开