【一】数据分组(group by ):
1.group by 和where
select 列a,聚合函数(聚合函数规范) from 表明 where 过滤条件 group by 列a
2.group by 和having
select 列a,聚合函数(聚合函数规范) from 表明 group by 列a having 过滤条件 ;
3.group by 和order by
select 列a,聚合函数(聚合函数规范) from 表明 group by 列a order by 条件;
【二】使用having字句对分组后的结果进行筛选,语法和where差不多:having 条件表达式
需要注意having和where的用法区别:
1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。
2.where肯定在group by 之前,即也在having之前。
3.where后的条件表达式里不允许使用聚合函数,而having可以。
4.having后只能跟group by后边字段条件 或者 非group by字段的聚合函数条件(按组查询);
【三】当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序:
Group By 和 Having, Where ,Order by这些关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。
SELECT的语法顺序就是起执行顺序
FROM
WHERE (先过滤单表/视图/结果集,再JOIN)
GROUP BY
HAVING (WHERE过滤的是行,HAVING过滤的是组,所以在GROUP之后)
ORDER BY