分组查询
按照某个字段来归类,字段的重复度太低不好,例如id没有一样的,每一行记录一个类,性别分为2类,部门来分4类
在一些以组为单位进行计算的情况下,每个部门平均工资,最高工资,每字后面的名字就是分组的字段可以视为一个小技巧,但不是绝对,这是体现了语文的功底。
分组后默认取出来的是组内的第一条记录select * from emp group by position;因此只要分完组之后就不会和组内单独某条记录进行交互
如何设置sql模式为严格模式,那么select * 是不可以的,select之后只能放分组字段或者分组函数。
所以只要分完组,再去考虑组里某一条记录就没有意义了。
分组的目的是以组为单位做一个统计的操作,通常用分组函数来统计,也叫聚合,聚集到一起合成一个最终结果
聚合函数:分组之后对属于一个组中的所有记录进行的将多个数据聚合到一个数据的函数
max(salary):可以对任何字段进行聚合
min()
sum()
avg()
count(id):对应字段计数,例如按部门分组,想查看有几个部门,因为id不重复。
having
和where用法一样,但是时机不同
having在分组后进一步过滤
where不能用聚合函数
having可以用
例如统计部门年龄大于25,平均工资大于10000的部门。
where是先过滤年龄,having再过滤分组后信息