SQL - 学习笔记3
12、数据分析 - 聚合函数
(1) 函数表达式 = 聚合函数名 + (参数)
以列为输入,输出只有一行。
对该列进行汇总,不实际检索数据,而是汇总处理数据。
(2) 计数函数
COUNT(*)或(1) 确定表中行的数目或符合特定条件的行的数目
COUNT(col) 只作用于非null行 (不可同时计数多列)
COUNT(DISTINCT col) 对行去重计数
(3) 求和函数 - SUM
指定列的和:SUM(col)
具体用法:区别于直接四则运算;只对数值型作用;可同时操作多个列;可作用于计算表达式。
(4) 均值函数 - AVG
指定列的平均值: AVG(col)
具体用法:分母不对NULL计数;可同时操作多列
(5) 最大值函数 - MAX
指定列的最大值:MAX(col)
具体用法:适用数值型、文本型、日期型;要求该列可以排序;忽略NULL;DISTINCT无意义。
(6) 最小值函数 - MIN
指定列的最小值:MIN
具体用法:适用数值型、文本型、日期型;要求该列可以排序;忽略NULL;DISTINCT无意义。
13、数据分析 - 分组数据
(1) 将数据分组,再在各组中进行聚合。一定与聚合函数同时出现。
SELECT [聚合键(GROUP BY 指定列)],[分组列] FROM … WHERE … GROUP BY [聚合键];
结果中一行数据代表一个分组;
SELECT展示列必须与分组对应,那么就只能是聚合键;
NULL值单独成为一个分组;
聚合键尽量不要出现别名。
(2) 分组过滤
将数据分组,各组中聚合,对聚合结果再次筛选,得到所需分组,一定在GROUP BY之后。
SELECT… FROM … WHERE … GROUP BY … HAVING …;
先过滤,再分组,再聚合,再筛选
例:SELECT brand, COUNT(*) FROM milk_tea WHERE cost > 5 GROUP BY brand HAVING COUNT(*) >= 2;
WHERE指定行的条件
HAVING指定组的条件
分组之前排除的行不参与分组
过滤分组
聚合键写在WHERE中更合适
尽量不要对GROUP BY使用别名,但是ORDER BY可以使用别名