mysql - 在 mySQL 的新字段中获取 ROLL UP 或 Count() 总和

标签 mysql count sum rollup

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

   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;

关于mysql - 在 mySQL 的新字段中获取 ROLL UP 或 Count() 总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33804008/

相关文章:

MySQL 选择另一个表上的计数查询

jquery - 无法使用jQuery将记录插入数据库

mysql - 尝试在 Mac OSX 上的带有 MySQL 的 virtualenv 中安装 Django CMS 时出错

python - 连续出现的项目数

c++ - 计算对 vector 中的出现次数

mysql - 使用 HAVING 和 GROUP BY 获取总金额

r - 按R中的 block 总结数字

r - 求 R 中行对的总和

Java Spring Hibernate 将重复值保存到 MySQL 表会引发错误

MYSQL 两个不同表分组的总和