表 用户名 是否操作(0未操作、1已操作) 是否成功(0未成功、1已成功)
a 0 0
a 1 0
a 1 0
a 1 1
a 1 1
b 1 0
b 1 0
b 1 1
b 1 1
b 1 1
c 0 0
c 1 0
c 1 1
c 1 1
c 1 1
查出来的结果用户名 提交总数 已操作数 成功数 未成功数
a 5 4 2 3
b 5 5 3 2
c 5 4 3 2
a 0 0
a 1 0
a 1 0
a 1 1
a 1 1
b 1 0
b 1 0
b 1 1
b 1 1
b 1 1
c 0 0
c 1 0
c 1 1
c 1 1
c 1 1
查出来的结果用户名 提交总数 已操作数 成功数 未成功数
a 5 4 2 3
b 5 5 3 2
c 5 4 3 2
select 用户名,count(是否操作),sum(是否操作),sum(是否成功),SUM(CASE WHEN 是否成功=0 THEN 1 ELSE 0 END)
from tb
GROUP BY 用户名
select 用户名,count(*) as [提交总数],
sum(case when 是否操作=1 then 1 else 0 end) as [已操作数],
sum(case when 是否成功=1 then 1 else 0 end) as [成功总数],
sum(case when 是否成功=0 then 1 else 0 end) as [未成功数]
from tb
group by 用户名
--演示环境
CREATE TABLE TEST(NAME VARCHAR(4),SFCZ INT,SFCG INT)
INSERT TEST(NAME,SFCZ,SFCG)
SELECT 'a',0,0 UNION ALL
SELECT 'a',1,0 UNION ALL
SELECT 'a',1,0 UNION ALL
SELECT 'a',1,1 UNION ALL
SELECT 'a',1,1 UNION ALL
SELECT 'b',1,0 UNION ALL
SELECT 'b',1,0 UNION ALL
SELECT 'b',1,1 UNION ALL
SELECT 'b',1,1 UNION ALL
SELECT 'b',1,1 UNION ALL
SELECT 'c',0,0 UNION ALL
SELECT 'c',1,0 UNION ALL
SELECT 'c',1,1 UNION ALL
SELECT 'c',1,1 UNION ALL
SELECT 'c',1,1----查询 select NAME 用户名,count(SFCZ) 提交总数,sum(SFCZ) 已操作数,sum(SFCG) 成功数,
SUM(CASE WHEN SFCG=0 THEN 1 ELSE 0 END) 未成功数
from TEST
GROUP BY NAME/*
用户名 提交总数 已操作数 成功数 未成功数
---- ----------- ----------- ----------- -----------
a 5 4 2 3
b 5 5 3 2
c 5 4 3 2(3 行受影响)
SELECT NAME 用户名,count(SFCZ) 提交总数,sum(SFCZ) 已操作数,sum(SFCG) 成功数,
SUM(CASE WHEN SFCG=0 THEN 1 ELSE 0 END) 未成功数
FROM TEST
GROUP BY NAME
VARCHAR字段用3楼的吧.也行..
sum(case when 是否操作='1' then 1 else 0 end) as [已操作数],
sum(case when 是否成功='1' then 1 else 0 end) as [成功总数],
sum(case when 是否成功='0' then 1 else 0 end) as [未成功数]
from tb
group by 用户名字符串类型加个引号