本帖最后由 jycnet 于 2010-01-07 15:35:05 编辑

解决方案 »

  1.   

    (72x0.5+73x0.4+74x0.1)那些0.5是哪来的
      

  2.   

    select 学生编号 , sum((表现A * 0.5 , 表现B * 0.3 + 表现C * 0.1) * 学习课时 / (select sum(学习课时) from tb where 学生编号 = t.学生编号)) from tb t gropu by 学生编号
      

  3.   

    create table tb(学生编号 varchar(10),学习课时 int,表现A int,表现B int,表现C int) 
    insert into tb values('11111', 100 , 72 , 73, 74 )
    insert into tb values('11111', 200 , 62 , 63, 64 )
    insert into tb values('11111', 300 , 82 , 83, 84 )
    insert into tb values('22222', 200 , 52 , 53, 54 )
    insert into tb values('22222', 100 , 42 , 43, 44 )
    goselect 学生编号 , cast(sum(平均分) as decimal(18,2)) 平均分 from
    (
      select 学生编号 , 平均分 = (表现A * 0.5 + 表现B * 0.3 + 表现C * 0.1) * 学习课时 / (select sum(学习课时) from tb where 学生编号 = t.学生编号) from tb t
    ) m
    group by 学生编号drop table tb/*
    学生编号       平均分                  
    ---------- -------------------- 
    11111      66.80
    22222      44.30(所影响的行数为 2 行)
    */
      

  4.   

    SELECT 学生编号,sum(学习课时*(表现A*0.5+表现B*0.4+表现C*0.1))/sum(学习课时)
    FROM 表 
    GROUP BY 学生编号
      

  5.   

    create table tb(学生编号 varchar(10),学习课时 int,表现A int,表现B int,表现C int) 
    insert into tb values('11111', 100 , 72 , 73, 74 )
    insert into tb values('11111', 200 , 62 , 63, 64 )
    insert into tb values('11111', 300 , 82 , 83, 84 )
    insert into tb values('22222', 200 , 52 , 53, 54 )
    insert into tb values('22222', 100 , 42 , 43, 44 )
    goselect 学生编号 , 平均分 = cast(sum((表现A * 0.5 + 表现B * 0.4 + 表现C * 0.1) * 学习课时) / sum(学习课时) as decimal(18,2))
    from tb 
    group by 学生编号drop table tb/*
    学生编号       平均分                  
    ---------- -------------------- 
    11111      74.27
    22222      49.27(所影响的行数为 2 行)
    */
      

  6.   

    select 
    学生编号 , 
    sum((表现A * 0.5 , 表现B * 0.3 + 表现C * 0.1) * 学习课时 / (select sum(学习课时) from tb where 学生编号 = G.学生编号)) 
    from 
    成绩表 G 
    gropu by 
    学生编号
      

  7.   

    忘记了列别名了:
    select 
    学生编号 , 
    sum((表现A * 0.5 , 表现B * 0.3 + 表现C * 0.1) * 学习课时 / (select sum(学习课时) from tb where 学生编号 = G.学生编号))  as 平均成绩
    from 
    成绩表 G 
    gropu by 
    学生编号