1、group by需要分组的时候使用,不使用group by的时候,聚集函数都是针对于所有的行使用的,
使用 group by以后是对一个一个的组进行聚集。
2、使用group by之后,select中选择的列,必须是出现在了group by后面或者是聚集函数,
GROUP BY 子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在 SELECT 中使用表达式,则必须在 GROUP BY 子句中指定相同的表达式。不能使用别名。
3、如果分组列中具有 NULL 值,则 NULL 将作为一个分组返回。如果列中有多行 NULL 值,它们将分为一组。
4、GROUP BY 子句必须出现在 WHERE 子句之后, ORDER BY 子句之前。
5、, WHERE 在数据分组前进行过滤, HAVING 在数据分组后进行过滤。这是一个重要的区别, WHERE 排除的行不包括在分组中。这可能会改变计算值,从而影响 HAVING 子句中基于这些值过滤掉的分组。
6、where中不能使用聚集函数,而having中可以使用聚集函数。