分组数据
1.创建分组 Group By
-- 1.先进行分组,在进行组内汇总(聚合)
-- with rollup 关键字可以汇总所有组的数据
select count(*) from 表名 as 表别名
group by 列名 with rollup;
1)group by 后面可以包含多个列,对分组进行嵌套;
2)如果嵌套分组,数据将在最后规定的分组上进行汇总(聚合);
3)group by 子句中每个列都必须是检索列或有效的表达式【不能是聚合函数】
4)Group by 子句必须使用于select子句相同的表达式;
5)分组列中具有NULL值的将被归为一个分组;
6)group by 必须触红线在where子句之后;order by子句之前;
【需要先进行分组,然后在组内进行select where子句的过滤,最后进行排序】
2.过滤分组 having
【作用/与where语句的区别】
1)HAVING 关键字是用来过滤分组的,可以过滤掉不符合HAVING子句所要求的条件的分组;
2)而where子句是用来过滤行的;
3)将每条记录视作一个单独的分组,则HAVING子句可以完成where子句能完成的全部功能;
【计算顺序】
1)先计算select from where子句,进行记录(行)过滤;
2)再计算Group By子句,进行分组;
3)之后计算HAVING子句,进行分组过滤;
4)然后计算Order By子句,进行组件某聚合值的排序;
5)最后计算LIMIT子句,设置检索的行数;