【发布时间】:2015-11-19 12:29:33
【问题描述】:
我有一个表,我需要对一列进行计数,然后将其按其他列分组,然后在计数旁边的新字段中获取每组计数的总值。 我正在添加一些数据来准确解释我想要什么:
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
有什么建议吗???
【问题讨论】:
-
为什么需要列和行中的值?另外,您的最终结果看起来不正确。
-
如果我能得到如图所示的 sum 列,我可以不用在查询中汇总。我显示的最后一个结果是我希望查询结果如何(如果有帮助,则无需汇总)。
-
你的主键是什么?
-
我没有在表中设置任何主键。