一、对表进行聚合查询
1、聚合函数
COUNT (表中的行数) SUM AVG MAX MIN
2、计算表中数据的行数
SELECT COUNT()
FROM Product;
(COUNT函数的结果根据参数的不同而不同,COUNT()会得到包含NULL的数据行球,而COUNT(<列名>)会得到NULL之外的数据行数)
3、计算合计值
SELECT SUM(列)
FROM Product
(聚合函数会将NULL排除在外,但COUNT(*)例外,并不会排除NULL)
(MAX MIN函数适用于所有数据类型的列,SUM AVG函数只适用于数值类型的列)
4、使用聚合函数删除重复值(关键字DISTINT)
SELECT COUNT(DISTINCT product_type)
FROM Product
(想要计算值的种类时,可以在count函数的参数中使用DISTINCT)
二、对表进行分组
1、GROUP BY子句
SELECT <列名>
FROM<表名>
GROUP BY<列名>
(子句的书写顺序不能变:SELECT—FROM —WHERE —GROUP BY)
2、聚合健中包含NULL的情况
聚合健中包含NULL时,在结果中会以“不确定”行(空行)的形式表现出来
3、使用WHERE子句时GROUP BY的执行结果
SELECT <列名>
FROM<表名>
WHERE
GROUP BY<列名>
4、与聚合函数和GROUP BY子句有关的常见错误
- 在SELECT子句中书写了多余的列
(把聚合键之外的列名书写在SELECT子句之中)(使用GROUP BY子句时,SELECT子句中不能出现聚合链之外的列名)
- 在GROUP BY子句中写了列的别名
(在GROUP BY子句中不能使用SELECT子句中定义的别名)
- GROUP BY子句的结果能排序吗(不能,是无序的)
- 在WHERE子句中使用聚合函数
(只有SELECT子句和HAVING子句,以及ORDER BY子句中能够使用聚合函数)
三、为聚合结果指定条件
1、HAVING子句(对集合指定条件)
SELECT <>
FROM<>
GROUP BY<>
HAVING<分组结果对应的条件>
【WHERE子句=指定行所对应的条件;HAVING子句=指定组所对应的条件】
四、对查询结果进行排序
1、ORDER BY子句(排序默认使用升序进行排列)
SELECT <>
FROM<>
ORDER BY<排序基准列>
(该子句通常写在SELECT语句的末尾)
(在子句列名后面使用DESC关键字,为降序)
(ASC和DESC是上升的和下降的这两个单词的缩写)
(排序键中包含NULL时,会在开头或末尾进行汇总)
(在ORDER BY子句中可以使用SELECT子句中未使用的列和聚合函数)
