sql求平均值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql求平均值相关的知识,希望对你有一定的参考价值。

数据库中有4,5,6三个月,有20人,每个人都有三个月的数据,怎样求出每个人的三个月平均值?

每个人的平均值?那就用group by姓名,按照姓名这个属性来分组统计,用avg函数来求每个人平均值,不过这样算,如果出现同名,会算成一个人,所以一般都是按照学号之类不会重复的列来分组。
大致代码如下:
select 姓名,avg(数学) as 数学平均分,avg(语文) as 语文平均分,avg(政治) as 政治平均分,avg(数学)+avg(语文)+avg(政治) as 总分平均分 from 表名
group by 姓名
参考技术A

三个月总的的平均值吗?


select 姓名,avg(值) as 平均值 from tb
group by 姓名

追问

首先谢谢你,我还是不太懂;
我数据库表中,横排是:月份,姓名,数学,语文,政治,总分
竖排是:4月,5月,6月
我想算出20人的,数学三月的平均值,语文平均值,政治平均值,总分平均值是什么代码?谢谢

追答
看下面,写了两个,看你要哪种:::


--测试表
create table TB2(月份  int,[姓名] nvarchar(20),[数学] int,[语文] int) 
insert into TB2 values(4,'张三1',66,77)
insert into TB2 values(5,'李四',66,88)
insert into TB2 values(6,'李大',66,78)
insert into TB2 values(4,'张三1',66,77)
insert into TB2 values(5,'李四1',66,88)
insert into TB2 values(6,'李大2',66,78)
insert into TB2 values(4,'张三3',66,77)
insert into TB2 values(5,'李四4',66,88)
insert into TB2 values(6,'李大5',66,78)

--查寻1(所有学生3个月的平均值,按月)

select 月份,avg([数学])as 数学,avg([语文]) as 语文

from tb2
group by 月份

--结果:
月份 数学  语文
4 66 77
5 66 88
6 66 78

--查寻2(每个学生3个月的平均值)

select 姓名,avg([数学])as 数学,avg([语文]) as 语文

from tb2
group by 姓名
--结果:

月份 数学  语文
李大 66 78
李大2 66 78
李大5 66 78
李四 66 88
李四1 66 88
李四4 66 88
张三1 66 77
张三3 66 77

以上是关于sql求平均值的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句求平均值,急求!!!

SQL语句优化-关于分组求平均值

ORACLE每隔15分钟求一个平均值,怎么写sql?

SQL平均值怎么求

按季度求平均值sql

PL/SQL:求两个值相减的平均值