我看你的思路太乱了你把数据库和应用程序搞在一起了表头要用你的应用程序去实现。年龄分三段去查询。
select sum(FGrade) from TABLE1 where FAge<=15
select sum(FGrade) from TABLE1 where FAge>16 and FAge<17
select sum(FGrade) from TABLE1 where FAge>=18

解决方案 »

  1.   

    select sum(FGrade),count(*) from TABLE1 where FAge<=15 goup byFClass
    select sum(FGrade),count(*) from TABLE1 where FAge>16 and FAge<17 goup byFClass
    select sum(FGrade),count(*) from TABLE1 where FAge>=18 goup byFClass
      

  2.   

    我说的实现不包括表头,只要能把数据选出来就成
    而且不是分三个sql,有可能分多个(动态的)
    我觉得可能是要查询多个子表后连接起来,但不知道如何实现
      

  3.   

    select a.gsum,a.counter,b.gsum,b.counter,c.gsum,c.counter from 
      select FClass,sum(FGrade) gsum,count(*) counter from TABLE1 
       where FAge<=15 goup by FClass a,
      select FClass,sum(FGrade) sgum,count(*) counter from TABLE1 
       where FAge>16 and FAge<17 goup by FClass b,
      select FClass,sum(FGrade) gsum,count(*) counter from TABLE1 
       where FAge>=18 goup by FClass c
    where a.FClass=b.FClass and b.FClass=c.FCladd
      

  4.   

    select FClass , sum( CASE WHEN FAge<=15 THEN 1 ELSE 0 END ) , sum(CASE WHEN FAge<=15 THEN 1 ELSE FGrade END ) , sum( CASE WHEN FAge>16 AND FAge<17 THEN 1 ELSE 0 END ) ,sum( CASE WHEN FAge>16 AND FAge<17 THEN FGrade ELSE 0 END ) ,  sum( CASE WHEN FAge>18 THEN 1 ELSE 0 END ) , sum( CASE WHEN FAge>18 THEN FGrade ELSE 0 END ) from TABLE1 group by FClass
      

  5.   

    --如果仅仅选出数据以上的语句都不错
    --如果动态选择,使用存储过程,把数据放入一个新表中
    create or replace procedure p_count(startage in number(2),
                                        endage in number(2))
    is
    begin
    insert into new table as
    select FClass ,count(fname),sum( fgrade) 
    from TABLE1 
    where fage between :startage and :endage  group by FClass;
    end