如何根据另一列或不同的组对列中的值求和?

时间:2015-02-25 06:51:00

标签: mysql sum rowid

例如,我有一个table1:

+---------------------+---------------+---------------+---------------+
| StartTime           | dIPaddr       |  countNum     |       rowid   |
+---------------------+---------------+---------------+---------------+
| 2014-04-09 09:47:53 | 0.210.208.240 |       2       |         1     |
| 2014-04-09 09:47:54 | 0.210.208.240 |       0       |         2     |
| 2014-04-09 09:47:55 | 0.210.208.240 |       1       |         3     |
| 2014-04-09 08:39:55 | 0.210.243.93  |       1       |         1     |
| 2014-04-09 08:39:56 | 0.210.243.93  |       0       |         2     |
| 2014-04-09 08:39:57 | 0.210.243.93  |       1       |         3     |
| 2014-04-09 13:02:25 | 0.210.25.224  |       3       |         1     |
| 2014-04-09 13:02:26 | 0.210.25.224  |       0       |         2     |
| 2014-04-09 13:02:27 | 0.210.25.224  |       1       |         3     |
+---------------------+---------------+---------------+---------------+

rowid基于不同的dIPaddr,在每个dIPaddr组中,它具有由StartTime排序的rowid。 我使用此命令为它们添加rowid:

ALTER TABLE table1
ADD COLUMN rowId int not null auto_increment,
ADD PRIMARY KEY(dIPaddr, rowId),
ENGINE=MyISAM;

我想将每个dIPaddr的第一个countNum相加,将每个dIPaddr的第二个countNum相加,将每个dIPaddr的第三个countNum相加。 如果使用伪代码,它应该如下所示:

dIPaddr(0.210.208.240).rowid(1).countNum+dIPaddr(0.210.243.93).rowid(1).countNum+dIPaddr(0.210.25.224).rowid(1).countNum

dIPaddr(0.210.208.240).rowid(2).countNum+dIPaddr(0.210.243.93).rowid(2).countNum+dIPaddr(0.210.25.224).rowid(2).countNum

dIPaddr(0.210.208.240).rowid(3).countNum+dIPaddr(0.210.243.93).rowid(3).countNum+dIPaddr(0.210.25.224).rowid(3).countNum

所以决赛桌应该是这样的:

+-------+
| count |
+-------+
|     6 |
|     0 |
|     3 |
+-------+

我是一名使用数据库的新生,对不起我的简单问题。谢谢大家的帮助! 顺便说一句,上面只是我真实数据库的一个简单示例,实际上,每个dIPaddr的rowid都有超过100条记录。所以我不能只使用限制3进行一些简单的计算。

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT SUM(countNum) as Total FROM tbl_name GROUP BY rowid
相关问题