日期:2014-05-19  浏览次数:20727 次

求一个简单的统计,实在没分了,大家帮帮忙。
表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