分组数据:group by 子句将表中的数据分成若干组
分组查询的特点:
分组查询中的筛选条件分为两类:
数据源 | 位置 | 关键字 | |
---|---|---|---|
分组前筛选 | 原始表 | group by子句前 | where |
分组后筛选 | 分组后的结果集 | group by子句后 | having |
1.分组函数做条件肯定是放在having子句中
2.能用分组前筛选的,优先考虑使用分组
3.group by子句支持单个字段分组,多个字段分组(多个字段之间用逗号隔开,没有顺序要求)
4.也可以添加排序,排序放在整个分组查询的最后
select 分组函数,列(要求出现在group by的后面) from 表 [where条件] group by 分组的列表 [order by 子句]
查询列表必须特殊,要求是分组韩式和group by后出现的字段
举例:
分组查询某字段的平均值:
select avg(某字段1),某字段2 from 表名 group by 某字段2;
添加筛选条件的分组查询(分组前):
select avg(某字段1),某字段2 from 表名 where 条件1 group by 某字段2;
添加筛选条件的分组查询(分组后):
select count(*) ,某字段1 from 表名 group by 某字段1 having 条件;
按表达式或函数分组:
select 分组函数1,分组函数2 from 表名 group by 分组函数2;
按多个字段进行分组:
select 分组函数 ,字段1,字段2 from 表名 group by 字段1,字段2;