关于SQL的Group By

SELECT col1, col2, col3, sum(col3) from T1
WHERE col1>20
GROUP BY col1, col2, col3, col4
HAVING count(*) > 2;

对于含有Group By的Sql语句,需要注意以下两点

1. SELECT后面的字段一定是GROUP BY后面的字段的子集。当然可以出现集合函数,集合函数中的字段没有特殊要求。

SELECT后不能有其他字段呢,因为当SQL中含有Group By时,查询出来的结果一定是针对组的一些共同的信息。如果某个字段不在Group By中而出现在SELECT后,那么这个字段是属于某条记录的,是“个性”,而不属于某个组的“共性”。五花八门的“个性”是无法在组信息里显示出来的。

2. HAVING与WHERE的区别是,HAVING后面的条件是集合函数。

原文地址:https://www.cnblogs.com/james6176/p/3457833.html