1.where后面不能跟聚合函数,因为where执行顺序大于聚合函数
2.
2.1 where用于初始表中筛选查询,它是一个约束声明,用于约束数据,在返回结果集之前起作用。
2.2 group by 先获取select查询的数据结果,然后从每组中取出一个指定字段或者表达式的值。
3.执行顺序 : where >group by > having
3.1 having补充:having后面的字段必须在select列表中出现过才可以使用。oracle数据库除外。
3.2 having和where都可以满足条件查询。
3.3 having子句限制的是组,不是行。where中不能使用聚合函数,但是having中可以使用。
3.4 当加上其他sql时候,S-F-W-F-H-O组合
注: select > where > group by > having > order by 顺序不可改变
################################################################################
GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要)
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组
################################################################################