22,210
社区成员
发帖
与我相关
我的任务
分享
create table #test
(
A NVARCHAR(10),
B NVARCHAR(10),
C NVARCHAR(10),
Flag INT,
Countity INT
)
INSERT INTO #test
select 'A1','B1','C1',0,1
union all
select 'A1','B1','C1',0,5
union all
select 'A1','B1','C1',1,4
union all
select 'A1','B1','C2',0,8
select A,B,C,sum(Countity) as 总个数,
sum(case Flag when 0 then Countity else 0 end ) as [Flag=0的个数],
sum(case Flag when 1 then Countity else 0 end ) as [Flag=1的个数],
str(sum(case Flag when 0 then Countity else 0 end )*100/cast(sum(Countity) as float))+'%' as [Flag=0的个数百分比],
str(sum(case Flag when 1 then Countity else 0 end )*100/cast(sum(Countity) as float))+'%' as [Flag=1的个数百分比]
from #test
group by A,B,C
drop table #test
A B C 总个数 Flag=0的个数 Flag=1的个数 Flag=0的个数百分比 Flag=1的个数百分比
A1 B1 C1 10 6 4 60% 40%
A1 B1 C2 8 8 0 100% 0%
select a,b,c,sum(cou) as '总数',sum(case when flag =0 then cou else 0 end) as 'flag0的个数',sum(case when flag=1 then cou else 0 end) as 'flag1的个数',sum(case when flag =0 then cou else 0 end)*1.0/sum(cou) as '0比例',
sum(case when flag=1 then cou else 0 end) *1.0/sum(cou) as '1比例'
from tb
group by a,b,c
结果
A1 B1 C1 10 6 4 0.600000000000 0.400000000000
A1 B1 C2 8 8 0 1.000000000000 0.000000000000
if object_id('tb')>0
drop table tb
create table tb
(
a varchar(5),
b varchar(5),
c varchar(5),
flag varchar(1),
cou int
)
select * from tb
insert into tb
select 'A1','B1','C1','0',1
union all
select 'A1','B1','C1','0',5
union all
select 'A1','B1','C1','1',4
union all
select 'A1','B1','C2','0',8
select a,b,c,sum(cou) as '总数',sum(case when flag =0 then 1 else 0 end) as 'flag0的个数',sum(case when flag=1 then 1 else 0 end) as 'flag1的个数',sum(case when flag =0 then 1 else 0 end)*0.1/sum(cou) as '0比例',
sum(case when flag=1 then 1 else 0 end) *0.1/sum(cou) as '1比例'
from tb
group by a,b,c
结果
A1 B1 C1 10 2 1 0.020000000000 0.010000000000
A1 B1 C2 8 1 0 0.012500000000 0.000000000000