table  A
 序号     发生时间(年)       事件           是否完成(0/1)        负责人      ……              
  ID        year        Formset           done             person     
   1        2007        AAAA               0                tom
   2        2007        BBBB               1                tom
   3        2007        CCCC               0                tom
   4        2007        DDDD               0                tom
   5        2007        EEEE               1                rose
   6        2007        FFFF               1                rose
   7        2007        GGGG               1                rose
   8        2007        FFFF               0                rose
   9        2007        HHHH               0                tom…………
   
   其中done字段0代表未完成,1代表已完成
  现在我需要根据上面这张表统计出一下格式的结果:
  年份    负责人      负责事件总数(a)      完成事件数(b)      效率(b/a)
 2007     tom           5                 1              0.2
 2007     rose          4                 3              0.75
   请问如何写SQL啊???
   拜托大家了!!!

解决方案 »

  1.   


    select year 年份,
           person  负责人,
           sum(formset) 负责事件总数,
           sum(done) 完成事件数,
           round(sum(done) / sum(formset), 2) 效率
      from tableA
     group by year, person;
      

  2.   

    select year, person, c, b / c
      from (select year, person, count(*) c, decode(done, 1, count(done)) b
              from a
             group by year, person)
      

  3.   

    select v1.year,
           v1.person,
           v1.formset ,
           v2.f_formset ,
           decode(v1.formset ,0,0,v2.f_formset /v1.formset )
    from (select year,person,count(formset) formset from A group by year,person)v1,
         (select year,person,count(formset) f_formset from A where done=1 group by year,person)v2
    where v1.year=v2.year(+) and 
          v1.person=v2.person(+)  
      

  4.   


    select year 年份,
           person 负责人,
           a 负责事件总数(a),
           b 完成事件数(b),
           b / a 效率(b / a)
      from (select year, person, count(*) a, sum(done) b
              from a
             group by year, person)