关于sql语句分组计算平均分并插入新表的问题

weixin_41989908 2018-04-19 10:05:55
我有两张表
表一 成绩表
考试名称 学生学号 班级 分数1 分数2 分数3 总分
第一次 123 1 90 90 90 270
第一次 123 1 90 90 90 270
第一次 123 1 90 90 90 270
第一次 123 1 90 90 90 270
第一次 123 2 80 80 90 250
第一次 123 2 90 90 90 270
第一次 123 2 90 90 90 270
第一次 123 2 90 90 90 270

表二 成绩统计表
考试名称 班级 分数1平均分 分数2平均分 分数3平均分 总分平均分

假如有一次的考试名称叫 考试一
我怎样按照班级计算平均分并将信息插入表二中,应该怎么写sql
...全文
1343 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2018-04-19
  • 打赏
  • 举报
回复
要保留两位小数时,自己转换一下,表2新增数据时不用转换,会隐性转换 e.g.
use Tempdb
go
--> --> 中国风(Roy)生成測試數據
 
if not object_id(N'Tempdb..#成绩表') is null
	drop table #成绩表
Go
Create table #成绩表([考试名称] nvarchar(23),[学生学号] int,[班级] int,[分数1] int,[分数2] int,[分数3] int,[总分] int)
Insert #成绩表
select N'第一次',123,1,90,90,90,270 union all
select N'第一次',123,1,90,90,90,270 union all
select N'第一次',123,1,90,90,90,270 union all
select N'第一次',123,1,90,90,90,270 union all
select N'第一次',123,2,80,80,90,250 union all
select N'第一次',123,2,90,90,90,270 union all
select N'第一次',123,2,90,90,90,270 union all
select N'第一次',123,2,90,90,90,270
Go
SELECT [考试名称]
     , [班级]
     , AVG([分数1] * 1.0) AS [分数1]
     , AVG([分数2] * 1.0) AS [分数2]
     , AVG([分数3] * 1.0) AS [分数3]
     , AVG([总分] * 1.0) AS [总分]
FROM #成绩表
GROUP BY [班级]
       , [考试名称];
/*
考试名称	班级	分数1	分数2	分数3	总分
第一次	1	90.000000	90.000000	90.000000	270.000000
第一次	2	87.500000	87.500000	90.000000	265.000000
*/

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧