Oracle-分组统计查询

工欲善其事必先利其器
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

在这里插入图片描述


一、分组函数

求和:sum()
平均值:avg()
最小值:min()
最大值:max()

1、查询学生的平均年龄

select avg(age) from student;

2、查询学生中年龄的最大值

select max(age) from student;

3、查询学生中年龄的最大值和最小值

select max(age),min(age) from student;

4、查询学生的年龄总和

select sum(age) from student;

二、COUNT()函数

count()函数有三种写法,分别如下
count(*):可以准确地返回表中的全部记录数。
count(字段):统计不为null的所有数据量。
count(distinct 字段):去重后数据的数据量。

1、查询学生表中的数据量

select count(*) from student;

2、查询学生表中姓名不为null的数据量

select count(name) from student;

3、查询学生表中姓名不重复的数据量

select count(distinct name) from student;

三、分组统计

group by:分组统计函数

1、查询学生表中每个班级学生年龄的平均数,按照班级进行分组

select avg(age) from student group by class;

2、查询学生表中每个地区学生年龄的平均数,按照地区进行分组

select avg(age) from student group by add;

注意:如果查询的时候不使用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;

五、HAVING子句

having是在group by语句之后执行的,所以进行group by分组后可以再根据having子句进行过滤

1、查询学生表中的学生班级和平均年龄,并根据班级分组,然后将平均年龄大于10的班级与成绩查出

select class,avg(age) from student group by class having avg(age) > 10;

六、总结

这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。

文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

猜你喜欢

转载自blog.csdn.net/weixin_44096133/article/details/125477080