--数据分析之聚合函数
函数表达式 = 聚合函数名 + (参数)
注意:
1.输入的是列
2.输出的是一行
3.汇总该列,不实际检索数据,而是汇总处理数据
4.聚合函数会将NULL排除在外,但COUNT(*)例外。只要有列名作为参数,NULL就会被排除在外。
--计数函数 COUNT唯一一个可以用*的聚合函数
1.COUNT(*)/COUNT(1) 确定表中行的数目(包含NULL的数据行数)或符合条件的行的数目
2.COUNT(col) 只作用于非NULL行(NULL的数据行不计数) 不可重复计数多列(col为列名)
3.COUNT(DISTINCT col) 对行去重计数
--该列所有行、部分行进行聚合
--求和函数 SUM
指定列的和: SUM(col)
具体用法:区别于直接的四则运算(四则运算的时候求和有空值的话,结果直接为空值,但是SUM可以直接跳过控制计算);只对数值型所用;可以同时操作多个列;可以用于计算表达式
--均值函数 AVG
指定列的平均值:AVG(col)
具体用法:分母不对NULL计数,和SUM一样;可以同时操作多个列
注意:自动过滤NULL
--最大值函数 MAX
--最小值函数 MIN
指定列的最大值: MAX(col)
指定列的最小值: MIN(col)
具体用法:适用于数值型、文本型、日期型;要求该列可以排序;忽略NULL;DISTINCT无意义
--数据分析之分组过滤
SELECT...
FROM...
WHERE...
GROUP BY 聚合键(分组列)
HAVING...
ORDER BY...;
注意:
1.执行顺序:FROM --> WHERE --> GROUP BY --> SELECT --> ORDER BY
2.结果中一行数据即代表一个分组,NULL值单独成为一个分组;
3.GROUP BY不可以使用SELECT子句中定义的别名, 而ORDER BY可以使用,这是因为ORDER BY的语句执行在SELECT之后,GROUP BY 执行在SELECT之前;
4.聚合键之外的列名不可以写在SELECT的子句中;
4.WHERE指定行的条件,不可以使用聚合函数;
5.HAVING指定组的条件
5.聚合键写在WHERE中更合适
6.GROUP BY 和 DISTINCT 的区别:他们都会对NULL进行单独分组,对多列使用也会得到同样的结果,DISTINCT是想要删除 选择结果中 的重复记录;GROUP BY是进行分组,对分组后的结果进行聚合操作。