标签:顺序 不同 nbsp 去除 平均值 关键字 mysql student 行数据
六.聚集函数
使用聚集函数,可以方便的分析数据,主要有以下几种应用场景:
1.确定表的行数 (统计)
2.对某一列值进行求和
3.找出表的列 最大值,最小值 或平均值
特点: 使用聚集函数,返回的结果 是单行单列
用处:一般用于子查询 或 与分组搭配使用. 更多的是搭配分组使用
以下函数 distinct 为可选值
6.1 AVG([DISTINCT] expr) #求某一列平均值 会自动去除 内容为null 的列
例如:select avg(age) from student # 求 学生的平均年龄
6.2 COUNT([DISTINCT] expr) #统计某一列出现的行数 会自动去除 内容为null 的列
例如: select * from student # 统计共有多少条学生记录
6.3 MAX([DISTINCT] expr) #求出某一列的最大值
例如: select max(age) from student # 计算学生中最大的年龄是
6.4 MIN([DISTINCT] expr) #求出某一列的最小值
例如: select min(age) from student # 计算学生中最小的年龄是
max 与 min 通常用来查找 数值或日期的最 大/小 值
6.5 SUM([DISTINCT] expr) # 对某一列的所有值进行求和
例如: select sum(age) from student # 统计学生年龄的总和
七.数据分组
一般聚集函数都是与分组搭配使用,分组是按照某一特点 把表中的数据分成多个组,分组后分别再进行聚集操作
6.1 关键字 : group by cloum
select sex,count(*) as 总人数 from student group by sex #统计不同性别的人数
特点:先分组 再聚集
需注意:
1.虽然没有明确要求, 但是一般 用于分组的列 , 都要在 select 语句中查询出
2.关键字优先级: group by 必需在 where 语句之后 , order by 之前
3.group by 后不可跟聚集函数, 不可跟别名
4.如果分组中存在null值, 会将null单独作为一个分组. 如果有多个null ,可将多个null作为一个分组
6.2 过滤分组数据 HAVING
where 是对行数据进行过滤, 不存在分组的概念,如果要对组内的数据再进行过滤,则需要使用另一个关键字 HAVING5
HAVING支持所有的 where子句中的操作符,语法完全一致 .
举个例子 :从学生表中分别统计男生,女生中 ,年龄在20岁以上的 人数,并且人数在5个以上
select sex,count(*) from student where age > 20 group by sex having count(*) > 5
having 后的表达式,必须是 select 后面出现的非别名的有效表达式,
6.3 分组后排序 按照人数进行排序 (各个关键字的顺序不可以错)
select sex,count(*) from student where age > 20 group by sex having count(*) > 5
6.4 关键字的顺序
从前至后: select , from , where , group by , having , order by ,limit
标签:顺序 不同 nbsp 去除 平均值 关键字 mysql student 行数据
原文地址:https://www.cnblogs.com/lzzRye/p/9359284.html