在 mySQL 的新字段中获取 ROLLUP 或 Count() 的总和

Getting ROLLUP or sum of Count() in a new filed in mySQL

我有一个 table,我需要对一列进行计数,然后按其他列对其进行分组,然后在计数旁边的新字段中获取每组计数的总值。 我正在添加一些数据来准确解释我想要的内容:

   CREATE TABLE tablename (
  ID INTEGER,
  NAME VARCHAR (10),
  TAG1 INTEGER,
  TAG2 INTEGER
);

INSERT INTO tablename VALUES 
(1, 'A', 1, 2),
(1, 'A', 2, 5),
(1, 'B', 1, 4),
(1, 'D', 3, 7),
(1, 'C', 5, 6),
(2, 'A', 1, 2),
(2, 'A', 2, 5),
(2, 'A', 2, 5),
(2, 'B', 1, 4),
(2, 'D', 3, 7),
(2, 'C', 5, 6),
(3, 'A', 1, 2),
(3, 'A', 2, 5),
(3, 'B', 1, 4),
(3, 'D', 3, 7),
(3, 'A', 1, 2),
(4, 'A', 2, 5),
(4, 'B', 1, 4),
(4, 'D', 3, 7),
(4, 'D', 5, 6),  
(4, 'C', 5, 6);

我使用过查询:

select ID
     , ifnull(NAME,Concat(ifnull(NAME,'TOTAL - '), ID)) NAMES
     , sum(case when (TAG1>0 and TAG2>0) then 1 else 0 end) Cnt 
  from tablename 
 group 
    by ID
     , NAME with rollup;

我得到的是:

ID NAME Cnt 
1   A    2
1   B    1
1   C    1
1   D    1
1  Total 5
2   A    3
2   B    1
2   C    1
2   D    1
2  Total 6
3   A    3
3   B    1
3   D    1
3  Total 5

我想要的是计数字段旁边的 sum() 字段

类似

ID NAME Cnt Sum
1   A    2   5
1   B    1   5
1   C    1   5
1   D    1   5
1  Total 5   5
2   A    3   6
2   B    1   6 
2   C    1   6
2   D    1   6
2  Total 5   6
3   A    3   5
3   B    1   5
3   D    1   5
3  Total 5   5

有什么建议吗???

这是一个不寻常的请求。由于 rollup,您无法使用第三列的 sum() 获得您想要的内容。所以,使用子查询:

select t.ID, coalesce(NAME, concat('TOTAL - ', t.ID), t.ID)) as NAMES,
       sum(t.TAG1 > 0 and t.TAG2 > 0) as Cnt,
       max(tt.sumcnt) as `sum`
from tablename t join
     (select id, sum(TAG1 > 0 and TAG2 > 0) as sumcnt
      from tablename t
      group by id
     ) tt
     on t.id = tt.id
group by t.ID, t.NAME with rollup;