读书人

简单的统计实在没分了大家帮帮忙

发布时间: 2012-01-11 22:28:46 作者: rapoo

求一个简单的统计,实在没分了,大家帮帮忙。
表jw_cl记录是班级
表jw_in记录是班级对应的课程
表Jw_res记录的是成绩

select * from jw_cl a left join jw_in b on a.JW_CLname=b.Jw_INclname

成绩的记录方法是这样

name num clname insubname cj.......
学生姓名 学号 班级名 科目名 成绩........

现在想得到这样的
班级名称 科目名称 班级总分 班级平均分 班级最高分 60分以上 60分以下

我知道很简单,但是不会子查询,实在没分了,谁帮帮忙。。

[解决办法]

create table Jw_res
(name varchar(20),
num int,
clname varchar(20),
insubname varchar(30),
cj numeric(4,1)
)

insert into jw_res(name,num,clname,insubname,cj)
select 'aa ',1, '一班 ', '语文 ',70
union all select 'bb ',2, '一班 ', '语文 ',70
union all select 'cc ',3, '一班 ', '语文 ',30
union all select 'dd ',4, '一班 ', '语文 ',80
union all select 'ee ',5, '一班 ', '语文 ',84
union all select 'ff ',6, '一班 ', '数学 ',60
union all select 'gg ',7, '一班 ', '数学 ',70
union all select 'hh ',8, '一班 ', '数学 ',50
union all select 'ii ',9, '一班 ', '数学 ',90
union all select 'jj ',10, '二班 ', '语文 ',76
union all select 'kk ',11, '二班 ', '语文 ',70

select clname,insubname,sum(cj) as cj,sum(cj)/count(1) as acj,max(cj) as mcj,
sum(case when cj> =60 then 1 else 0 end) dd,sum(case when cj <60 then 1 else 0 end) qq
from jw_res
group by clname,insubname

drop table jw_res

读书人网 >SQL Server

热点推荐