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后面的条件是集合函数。