一个学生成绩表怎么取得各班各年级的各科分数平均值

lshfong 2009-04-02 08:59:23
id 班级 姓名 语文 数学 英语
1 一年级1班 张同学 78 78 78
2 一年级1班 李同学 98 89 67
3 一年级2班 王同学 78 67 78
4 一年级2班 大同学 89 89 67
5 二年级1班 要同学 67 78 89
6 二年级1班 红同学 98 67 67
7 二年级1班 郑同学 80 87 78
8 二年级1班 刘同学 78 89 89
9 三年级2班 缪同学 67 67 67
10 三年级2班 付同学 88 89 78
11 三年级1班 黄同学 78 77 87
12 三年级1班 郭同学 78 99 89
13 三年级1班 女同学 76 78 78
14 四年级1班 男同学 86 67 67
15 四年级1班 小同学 90 67 78
16 四年级2班 大同学 89 78 90
17 四年级2班 易同学 98 89 89
18 四年级1班 付同学 90 78 78
19 四年级2班 李同学 89 78 56
20 五年级1班 王同学 98 98 67
21 五年级1班 大同学 88 78 89
22 五年级1班 要同学 96 67 89
23 五年级1班 红同学 89 89 87
24 五年级1班 郑同学 59 67 67
25 五年级1班 刘同学 78 89 67
26 六年级1班 缪同学 67 78 78
27 六年级1班 付同学 89 89 78
28 六年级2班 黄同学 87 67 76
29 六年级2班 郭同学 90 56 89
30 六年级1班 女同学 88 78 78
================================================================
如上表,我现在想生成几个视图;
一、每个年级的各科平均分
二、每个班级的各科平均分

谢谢了啊!邹大哥!
...全文
806 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzxap 2009-04-02
  • 打赏
  • 举报
回复
select left(班级,3) 年级, avg(语文) 语文,avg(数学) 数学,avg(英语) 英语
from @t
group by left(班级,3)
lg3605119 2009-04-02
  • 打赏
  • 举报
回复

create view GradeAVG
as
select substring(班级,1,charindex('年级',班级)+1),avg(语文),avg(数学),avg(英语) from tb group by substring(班级,1,charindex('年级',班级)+1)
go
create view ClassAVG
as
select 班级,avg(语文),avg(数学),avg(英语) from tb group by 班级
go


  • 打赏
  • 举报
回复
三:各班成绩总分前三名 
with
wang as (select 排名=row_number() over (partition by 班级 order by 语文+数学+英语 ), 班级,姓名,总分=(语文+数学+英语) from tb)

select * from wang where 排名<=3


四:各年级总分前三名

with
wang as (select 排名=row_number() over (partition by left(班级,3) order by 语文+数学+英语 ), 班级,姓名,总分=(语文+数学+英语) from tb)

select * from wang where 排名<=3
百年树人 2009-04-02
  • 打赏
  • 举报
回复
create view Avg_Grade
as
select
年级=left(班级,3),
语文平均分=avg(语文),
数学平均分=avg(数学),
英语平均分=avg(英语),
总平均分=avg(语文+数学+英语)/3
from
tb
group by
left(班级,3)
GO

create view Avg_Class
as
select
班级,
语文平均分=avg(语文),
数学平均分=avg(数学),
英语平均分=avg(英语),
总平均分=avg(语文+数学+英语)/3
from
tb
group by
班级

select * from Avg_Grade
/**
年级 语文平均分 数学平均分 英语平均分 总平均分
------ ----------- ----------- ----------- -----------
二年级 80 80 80 80
六年级 84 73 79 79
三年级 77 82 79 79
四年级 90 76 76 80
五年级 84 81 77 81
一年级 85 80 72 79

(所影响的行数为 6 行)
**/

select * from Avg_Class
/**

班级 语文平均分 数学平均分 英语平均分 总平均分
---------- ----------- ----------- ----------- -----------
二年级1班 80 80 80 80
六年级1班 81 81 78 80
六年级2班 88 61 82 77
三年级1班 77 84 84 82
三年级2班 77 78 72 76
四年级1班 88 70 74 77
四年级2班 92 81 78 84
五年级1班 84 81 77 81
一年级1班 88 83 72 81
一年级2班 83 78 72 78

(所影响的行数为 10 行)
**/
ljhcy99 2009-04-02
  • 打赏
  • 举报
回复
create view vi_class
as
select top 3 姓名,chengji
from table,
(select 班级,sum(语文+数学+英语) as chengji
from tableName
group by 班级 ) A
where A.班级=table.班级
order by chengji desc


create view vi_class1
as
select top 3 姓名,chengji
from table,
(select substring(班级,1,2) as 班级,sum(语文+数学+英语) as chengji
from tableName
group by 班级 ) A
where A.班级=table.substring(班级,1,2)
order by chengji desc
lshfong 2009-04-02
  • 打赏
  • 举报
回复
各位真热心啊!哪我就不客气了,再加几个视图:
三:各班成绩总分前三名
四:各年级总分前三名
claro 2009-04-02
  • 打赏
  • 举报
回复
帮顶。
htl258_Tony 2009-04-02
  • 打赏
  • 举报
回复
declare @t table(id int,班级 varchar(10),姓名 varchar(10), 语文 int, 数学 int, 英语 int )
insert @t select 1,'一年级1班','张同学',78,78,78
insert @t select 2,'一年级1班','李同学',98,89,67
insert @t select 3,'一年级2班','王同学',78,67,78
insert @t select 4,'一年级2班','大同学',89,89,67
insert @t select 5,'二年级1班','要同学',67,78,89
insert @t select 6,'二年级1班','红同学',98,67,67
insert @t select 7,'二年级1班','郑同学',80,87,78
insert @t select 8,'二年级1班','刘同学',78,89,89
insert @t select 9,'三年级2班','缪同学',67,67,67
insert @t select 10,'三年级2班','付同学',88,89,78
insert @t select 11,'三年级1班','黄同学',78,77,87
insert @t select 12,'三年级1班','郭同学',78,99,89
insert @t select 13,'三年级1班','女同学',76,78,78
insert @t select 14,'四年级1班','男同学',86,67,67
insert @t select 15,'四年级1班','小同学',90,67,78
insert @t select 16,'四年级2班','大同学',89,78,90
insert @t select 17,'四年级2班','易同学',98,89,89
insert @t select 18,'四年级1班','付同学',90,78,78
insert @t select 19,'四年级2班','李同学',89,78,56
insert @t select 20,'五年级1班','王同学',98,98,67
insert @t select 21,'五年级1班','大同学',88,78,89
insert @t select 22,'五年级1班','要同学',96,67,89
insert @t select 23,'五年级1班','红同学',89,89,87
insert @t select 24,'五年级1班','郑同学',59,67,67
insert @t select 25,'五年级1班','刘同学',78,89,67
insert @t select 26,'六年级1班','缪同学',67,78,78
insert @t select 27,'六年级1班','付同学',89,89,78
insert @t select 28,'六年级2班','黄同学',87,67,76
insert @t select 29,'六年级2班','郭同学',90,56,89
insert @t select 30,'六年级1班','女同学',88,78,78

select left(班级,3) 年级, avg(语文) 语文,avg(数学) 数学,avg(英语) 英语
from @t
group by left(班级,3)
/*
年级 语文 数学 英语
------ ----------- ----------- -----------
二年级 80 80 80
六年级 84 73 79
三年级 77 82 79
四年级 90 76 76
五年级 84 81 77
一年级 85 80 72

(6 行受影响)
*/
select 班级, avg(语文) 语文,avg(数学) 数学,avg(英语) 英语
from @t
group by 班级
/*

班级 语文 数学 英语
---------- ----------- ----------- -----------
二年级1班 80 80 80
六年级1班 81 81 78
六年级2班 88 61 82
三年级1班 77 84 84
三年级2班 77 78 72
四年级1班 88 70 74
四年级2班 92 81 78
五年级1班 84 81 77
一年级1班 88 83 72
一年级2班 83 78 72

(10 行受影响)
*/
或者要这样.
yygyogfny 2009-04-02
  • 打赏
  • 举报
回复
楼主的结帖率...
yygyogfny 2009-04-02
  • 打赏
  • 举报
回复
create view vi_class
as
select 班级,avg(语文),avg(数学),avg(英语)
from tableName
group by 班级


create view vi_grade
as
select 年级,avg(语文),avg(数学),avg(英语)
from tableName
group by 年级

utpcb 2009-04-02
  • 打赏
  • 举报
回复
select 班级,avg(语文),avg(数学),avg(英语) 
from tableName
group by 班级

select 年级,avg(语文),avg(数学),avg(英语)
from tableName
group by 年级

这个还要老大出马?
mugua604 2009-04-02
  • 打赏
  • 举报
回复

CREATE VIEW vw_TableNameGrade --创建视图
as
select 班级,avg(语文),avg(数学),avg(英语)
from tableName
group by 班级

GO
CREATE VIEW vw_TableNameClass --创建视图
as
select 年级,avg(语文),avg(数学),avg(英语)
from tableName
group by 年级


htl258_Tony 2009-04-02
  • 打赏
  • 举报
回复
declare @t table(id int,班级 varchar(10),姓名 varchar(10), 语文 int, 数学 int, 英语 int )
insert @t select 1,'一年级1班','张同学',78,78,78
insert @t select 2,'一年级1班','李同学',98,89,67
insert @t select 3,'一年级2班','王同学',78,67,78
insert @t select 4,'一年级2班','大同学',89,89,67
insert @t select 5,'二年级1班','要同学',67,78,89
insert @t select 6,'二年级1班','红同学',98,67,67
insert @t select 7,'二年级1班','郑同学',80,87,78
insert @t select 8,'二年级1班','刘同学',78,89,89
insert @t select 9,'三年级2班','缪同学',67,67,67
insert @t select 10,'三年级2班','付同学',88,89,78
insert @t select 11,'三年级1班','黄同学',78,77,87
insert @t select 12,'三年级1班','郭同学',78,99,89
insert @t select 13,'三年级1班','女同学',76,78,78
insert @t select 14,'四年级1班','男同学',86,67,67
insert @t select 15,'四年级1班','小同学',90,67,78
insert @t select 16,'四年级2班','大同学',89,78,90
insert @t select 17,'四年级2班','易同学',98,89,89
insert @t select 18,'四年级1班','付同学',90,78,78
insert @t select 19,'四年级2班','李同学',89,78,56
insert @t select 20,'五年级1班','王同学',98,98,67
insert @t select 21,'五年级1班','大同学',88,78,89
insert @t select 22,'五年级1班','要同学',96,67,89
insert @t select 23,'五年级1班','红同学',89,89,87
insert @t select 24,'五年级1班','郑同学',59,67,67
insert @t select 25,'五年级1班','刘同学',78,89,67
insert @t select 26,'六年级1班','缪同学',67,78,78
insert @t select 27,'六年级1班','付同学',89,89,78
insert @t select 28,'六年级2班','黄同学',87,67,76
insert @t select 29,'六年级2班','郭同学',90,56,89
insert @t select 30,'六年级1班','女同学',88,78,78

select left(班级,3) 年级, avg(成绩) 各科平均成绩
from
(select 班级,语文 成绩 from @t union all
select 班级,数学 from @t union all
select 班级,英语 from @t ) t
group by left(班级,3)
/*
年级 各科平均成绩
------ -----------
二年级 80
六年级 79
三年级 79
四年级 80
五年级 81
一年级 79

(6 行受影响)
*/
select 班级, avg(成绩) 各科平均成绩
from
(select 班级,语文 成绩 from @t union all
select 班级,数学 from @t union all
select 班级,英语 from @t ) t
group by 班级
/*
班级 各科平均成绩
---------- -----------
二年级1班 80
六年级1班 80
六年级2班 77
三年级1班 82
三年级2班 76
四年级1班 77
四年级2班 84
五年级1班 81
一年级1班 81
一年级2班 78

(10 行受影响)
*/
mugua604 2009-04-02
  • 打赏
  • 举报
回复

select 班级,avg(语文),avg(数学),avg(英语)
from tableName
group by 班级

select 年级,avg(语文),avg(数学),avg(英语)
from tableName
group by 年级

Teng_s2000 2009-04-02
  • 打赏
  • 举报
回复

select SUBSTRING(班级,1,3) as '年级',avg(语文),avg(数学),avg(英语) from Tables
group by 年级



这个就可以生成年级的结果吧哈哈
ljluck7687 2009-04-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ljluck7687 的回复:]
select 班级,avg(语文),avg(数学),avg(英语) from test group by 班级
[/Quote]
以上是每个班级的各科平均分

每个年级的各科平均分如下:
select left(班级,3),avg(语文),avg(数学),avg(英语) from test group by left(班级,3)
cyz9977 2009-04-02
  • 打赏
  • 举报
回复
唉~~那就等邹大哥吧~~~
ljluck7687 2009-04-02
  • 打赏
  • 举报
回复
select 班级,avg(语文),avg(数学),avg(英语) from test group by 班级
学籍成绩管理软件功能简介 QQ号:307323408 电话:13981697393 1、用学号或姓名中任何一种上分(很适合个别学生不写学号只写姓名,在查找的内容文本框中录入姓名或学号均可,电脑自动查找该生)。 2、支持多人打开同一数据库,同时录入各科成绩(解决了保存中的并发错误)。 3、两个字的名字分散成多个字的距离;计算年龄,男、女性别转换成1或2。 4、任意列打印(例如:现有一张有[姓名、学号、性别、联系方式、语文、数学、总分、位次]等列,只想打印此中的[姓名、学号、语文、数学、总分、位次],你使用该软件非常轻松做到),任意列导出。 5、根据所选列的比例和页的宽度自动调整列距。按数据行数和你设置的页数自动平均分配每页的行数,再根据页的高度自动调整行距,再不用调整行距。 6、轻松实现多纵列打印(若仅打印学号、姓名两列数据,一个班80个学生,打印成4纵列,在Excel里需要把21—80号的学生剪切到第二、三、四纵列,并调整格式。使用本软件,你只需在纵列个数里输入4,软件自动调整)。 7、轻松成绩分析〔可以对所有数据进行统计(排位次、求和、平均分、最高分、最低分、优生率、及格率、差生率、分数段、全能值、标准差),也可轻松对各班数据进行分析比较。本软件未锁定分析项目,由你自由选择分析的项目,操作更灵活〕。 8、支持打印设置格式保存,方便以后调用。 9、支持自设筛选条件和排序条件对数据进行筛选、排序和打印输出。 10、支持标准分的转换,支持无限等级、分数段设置。 11、已预设多个报输出格式,输出更加快捷。 12、成绩管理和学籍管理合并在一起,既不冗余数据,又步调一致。 13、支持导入和导出数据,更灵活地在Excel操作数据。导入、导出灵活,根据学籍号(文本格式)进行比较导入,功能强大。 14、转班、暂时离校、永久离校(删除数据)轻松完成。 15、建立上报教育局模块。 16、按学生姓名拼音首字母检索(查找)。 17、支持学生基本信息统计,便于学校年报数据。 在录入各学生成绩,可以按考室、考号、学号、电脑存入顺序等多种顺序进行快速录入。用该软件轻松总分、排位、分析,不用调行距、列距就能轻松打印出漂亮的成绩册、成绩分析。真正的让程序为你分析数据、调整打印格式的好软件。 排课软件功能简介: 1、不论教师任教几个头、跨几个级,不论手动还是自动排课,均不会出现在同一节上任多个班的课(但允许强制排多班课)。 2、一天最多可排16节课(早自习1节、上午6节、下午5节、晚上4节),一周七天节节可全排,即一周最多可排112节课。 3、排课过程中随时可查看教师任课细,每班课时、课名、教师设置、已排了多少节、还剩多少节等信息。 4、排课过程中随时可进行课程交换,检测多种信息,并显示在右边的格中。既可强制排成多班课(如早自习、晚自习),也可终止交换课。 5、点击任何一节课,软件用颜色区分显示该节可以移动到哪个位置,该教师任课情况;在该节还可以排哪些课程。 6、若微机室、运动场、实验室、音乐、美术室等场地有限,而该科目由多个教师任教,通过设置全校最多同时几个班上课,就可实现实验室、微机室、运动场一室一节一班上课。 7、可在某一节设置为全校统一某科目,如班会课;也可在某一节设置成全校统一不排某科目,便于开展教研活动。 8、课打印输出使用Word的邮件合并,想怎么设置格式就设置什么格式,美观、灵活。教师分课自动生成。 9、电脑自动排课,尽量连排、但三节不连堂,检测教师当天任课是否过平均量、任某班课是否过平均量等信息,做到尽量科学合理。 10、使用替换功能,可以非常轻松的换教师、换课名、换年级名,特别实用于教师变易、升年级任课教师不变。 11、轻松实现相斥(两位教师不能同时上课)。 用软件交友,用技术沟通。

27,579

社区成员

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

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