SQL中gruop by,having,where使用注意点:

1 如果select子句中的字段没有在聚合函数中,那么就必须出现在group by 子句中。而出现在group by子句中不一定要出现在select子句中。

2 聚合函数不能够用在where子句后面。

3 having是过滤分组过后的数据,在having组函数不能用列别名。

4 having子句也可以用在group By 的前面,但是建议用在group by 的后面,以便于

  逻辑理解。

5 having 和 where的区别:

  a.having只能用在group by 后面。有having肯定有group by子句。

  b.where子句用在having前面。

  c.having 是用于分组统计过后的过滤,而where是过滤的是原始数据,也就是分组统计之前的数据。

 

个人学习中的一点总结,错误和不足之处欢迎指正。