1、GROUP BY子句
SELECT Product_type,count(*)
FROM Product
GROUP BY product_type;
注意:
1、GROUP BY 子句中指定的列称为聚合键或者分组列。
2、聚合键中包含NULL的情况
聚合键中包含NULL时,在结果中会以“不确定”行(空行)的形式表现出来
3、使用where子句时group by的执行结果
SELECT purchase_price,count(*)
FROM product
WHERE product_type='衣服'
GROUP BY purchase_price;
--FROM——>WHERE——>GROUP BY——>SELECT(内部执行顺序)
4、与聚合函数和GROUP BY子句有关的常见错误
4.1、在SELECT子句中书写了多余的列
在使用聚合函数时,SELECT子句只能存在以下三种元素
- 常数
- 聚合函数
- 聚合键
SELECT product_name,purchase_price,count(*)
FROM product
GROUP BY purchase_price;
--列名product_name并没有包含在GROUP YB子句中,因此该列名也不能书写再SELECT子句中。
4.2、再GROUP BY 子句中写了列的别名
SELECT product_type AS pt,count(*)
FROM product
GROUP BY pt;
--SELECT子句再GROUP BY子句之后执行,再执行GROUP BY子句时,SELECT子句中定义的别名,DBMS还并不知道。
4.3、GROUP BY子句的结果能排序吗
随机的,通常SELECT语句的执行结果的显示顺序都是随机的,因此想要按照某种特定顺序进行排序的话,需要在SELECT语句中进行指定。
4.4、在WHERE子句中使用聚合函数
只有SELECT子句和HAVING子句(以及ORDER BY子句)中能够使用聚合函数。