列如表:
项目    姓名  玩          做事
扫地    张三  50           20
擦黑板  张三  20           10
擦黑板  王五  50           20
扫地    王五  20           10我需要统计整个表中 每个人总的玩时间÷每个人总的做事时间 > 1.5 和>0.5的人数 
我写到这个地方都写不下去了在此求助:
select sum(case when 玩 / 做事 >1.5) [>1.5] ,    //这里 我想 sum(玩)/sum(做事) 但是出错了
       sum(case when 玩 /做事  >0.5) [>0.5]
from 表 
group by 姓名
这里的结果是把每个人做的每件事的统计出来了
姓名 >1.5  >0.5
张三 N     N
王五 m     m但是我要求结果是
>1.5   >0.5
n      m       
就一行数据

解决方案 »

  1.   

    select sum(case when 玩 *1.00/ 做事 >1.5 THEN 1 END 0 END) [>1.5] ,    
          sum(case when 玩*1.00 /做事  >0.5) THEN 1 END 0 END [>0.5] 
    from 表 
    group by 姓名?
      

  2.   

    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([项目] varchar(6),[姓名] varchar(4),[玩] int,[做事] int)
    insert [tb]
    select '扫地','张三',50,20 union all
    select '擦黑板','张三',20,10 union all
    select '擦黑板','王五',50,20 union all
    select '扫地','王五',20,10
    select 姓名 ,
           sum(case   when [玩]*1.0 / 做事>1.5 then 1 else 0 end) [>1.5] ,
           sum(case   when [玩]*1.0 / 做事>0.5 then 1 else 0 end) [>0.5] 
    from tb 
    group by 姓名 /*
    姓名   >1.5        >0.5
    ---- ----------- -----------
    王五   2           2
    张三   2           2(2 行受影响)
    */
      

  3.   

    select sum(case when 玩 *1.00/ 做事 >1.5 THEN 1 END 0 END) [>1.5] ,    
          sum(case when 玩*1.00 /做事  >0.5 THEN 1 END 0 END) [>0.5] 
    from 表 
    group by 姓名括号打错了
      

  4.   

    汗···我说了 我写那个是错误,怪我没把语句给全我要的结果是 整个表中 每个人总的“玩”÷每个人总的“做事”>1.5的 人数 的人数是整个表全部>1.5的人数
      

  5.   


    declare @a table(项目 varchar(20),   姓名 varchar(20), 玩  int,        做事 int )
    insert @a select
    '扫地',    '张三'  ,50,          20  union all select
    '擦黑板',  '张三'  ,20,          10  union all select
    '擦黑板' , '王五' , 50 ,        20  union all select
    '扫地'    ,'王五',  20   ,       10 select [>1.5]=sum(case when 玩*1.0/做事>1.5 then 1 else 0 end),
    [>0.5]=sum(case when 玩*1.0/做事>0.5 then 1 else 0 end)
    from
    (select 姓名,sum(玩) as 玩,sum(做事)as 做事 
    from @a 
    group by 姓名)t
    >1.5        >0.5
    ----------- -----------
    2           2(1 行受影响)???
      

  6.   

    给了 group by 姓名 就肯定有2行数据 是错的
      

  7.   


    你没看我的group by 姓名是在子查询里面的吗??