Oracle-分组统计查询
工欲善其事必先利其器
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。
一、分组函数
求和:sum()
平均值:avg()
最小值:min()
最大值:max()
1、查询学生的平均年龄
select avg(age) from student;
- 1
2、查询学生中年龄的最大值
select max(age) from student;
- 1
3、查询学生中年龄的最大值和最小值
select max(age),min(age) from student;
- 1
4、查询学生的年龄总和
select sum(age) from student;
- 1
二、COUNT()函数
count()函数有三种写法,分别如下
count(*):可以准确地返回表中的全部记录数。
count(字段):统计不为null的所有数据量。
count(distinct 字段):去重后数据的数据量。
1、查询学生表中的数据量
select count(*) from student;
- 1
2、查询学生表中姓名不为null的数据量
select count(name) from student;
- 1
3、查询学生表中姓名不重复的数据量
select count(distinct name) from student;
- 1
三、分组统计
group by:分组统计函数
1、查询学生表中每个班级学生年龄的平均数,按照班级进行分组
select avg(age) from student group by class;
- 1
2、查询学生表中每个地区学生年龄的平均数,按照地区进行分组
select avg(age) from student group by add;
- 1
注意:如果查询的时候不使用group by语句,那么select子句中只允许出现统计函数,其它字段不允许出现。例如查询所有的学生数量,并且查询出学生的姓名这个是不允许的。
错误sql:select name,count() from student;
正确sel:select count() from student;
注意:如果使用group by语句,那么select子句中只允许出现group by语句的字段,其它的字段不允许出现。例如根据班级查询学生的总数,和所有的学生姓名是不允许的。
错误sql:select name,class,count() from student group by class;
正确sql:select class,count() from student group by class;
四、多表查询与分组统计
分组统计是可以和多表查询一起使用的。
1、查询学生表id和老师表sid相同的学生姓名,并统计数量按照学生姓名分组
select s.name,count(*) from student s,teacher t where s.id = t.sid group by s.name;
- 1
五、HAVING子句
having是在group by语句之后执行的,所以进行group by分组后可以再根据having子句进行过滤
1、查询学生表中的学生班级和平均年龄,并根据班级分组,然后将平均年龄大于10的班级与成绩查出
select class,avg(age) from student group by class having avg(age) > 10;
- 1
六、总结
这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。
文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。
可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。
文章来源: xiaoqijava.blog.csdn.net,作者:旷世奇才李先生,版权归原作者所有,如需转载,请联系作者。
原文链接:xiaoqijava.blog.csdn.net/article/details/125477080
- 点赞
- 收藏
- 关注作者
评论(0)