表 用户名    是否操作(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

解决方案 »

  1.   


    select 用户名,count(是否操作),sum(是否操作),sum(是否成功),SUM(CASE WHEN 是否成功=0 THEN 1 ELSE 0 END)
    from tb
    GROUP BY 用户名
      

  2.   


    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 用户名
      

  3.   


    --演示环境
    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 行受影响)
      

  4.   

    --对应你的表名和列名
    SELECT NAME 用户名,count(SFCZ) 提交总数,sum(SFCZ) 已操作数,sum(SFCG) 成功数,
           SUM(CASE WHEN SFCG=0 THEN 1 ELSE 0 END) 未成功数
    FROM TEST
    GROUP BY NAME
      

  5.   

    既然存的是0和1的数据一般都是常用来统计的 VARCHAR设计太不好了.
    VARCHAR字段用3楼的吧.也行..
      

  6.   

    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 用户名字符串类型加个引号