列如表:
项目 姓名 玩 做事
扫地 张三 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
就一行数据
项目 姓名 玩 做事
扫地 张三 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
就一行数据
sum(case when 玩*1.00 /做事 >0.5) THEN 1 END 0 END [>0.5]
from 表
group by 姓名?
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 行受影响)
*/
sum(case when 玩*1.00 /做事 >0.5 THEN 1 END 0 END) [>0.5]
from 表
group by 姓名括号打错了
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 行受影响)???
你没看我的group by 姓名是在子查询里面的吗??