mysql - 总和数据库中特定列的所有行是相同的

标签 mysql sum

在我的项目中,我需要对具有相同类型和相同参数的所有行进行求和,其他的则保持原样。例如我有这样一个表:

id | type | ammount | param1 | param2 | param3
1  |  1   |    5    |   1    |    3   |   2
2  |  1   |    20   |   2    |    3   |   2
3  |  1   |    21   |   1    |    3   |   2
4  |  2   |    10   |   1    |    3   |   2
5  |  2   |    3    |   1    |    2   |   1

我想要达到的结果是:

type | sum of ammount | param1 | param2 | param3
 1   |     26         |    1   |   3    |   2
 1   |     20         |    2   |   3    |   2   
 2   |     10         |    1   |   3    |   2
 2   |     3          |    1   |   2    |   1

正如您所看到的,id 为 1 和 3 的行已求和,因为它们具有相同的类型并且所有参数(param1、param2 和 param3)都相同。我怎样才能实现这个目标?我用的是mysql。

提前谢谢您。

卡尔雷格。

最佳答案

使用“group by”子句:

use test;

create table Testsum(id int, type int, ammount int,  param1 int, param2 int,  param3 int);

insert Testsum(id, type, ammount, param1, param2, param3) 
values(1, 1,  5, 1, 3, 2),
(2, 1, 20, 2, 3, 2),
(3, 1, 21, 1, 3, 2),
(4, 2, 10, 1, 3, 2),
(5, 2,  3, 1, 2, 1);

/*
id | type | ammount | param1 | param2 | param3
1  |  1   |    5    |   1    |    3   |   2
2  |  1   |    20   |   2    |    3   |   2
3  |  1   |    21   |   1    |    3   |   2
4  |  2   |    10   |   1    |    3   |   2
5  |  2   |    3    |   1    |    2   |   1
*/

select  type, sum(ammount) as ammount, param1, param2, param3
from Testsum
group by  type,  param1, param2, param3;

结果:

type,ammount,param1,param2,param3
1,26,1,3,2
1,20,2,3,2
2,3,1,2,1
2,10,1,3,2

可能最高的 ID 有帮助:

select  max(id) as id, type, sum(ammount) as ammount, param1, param2, param3
from Testsum
where ammount is not null or ammount <> 0
group by  type,  param1, param2, param3 ;

或者指定 min(id) 而不是 max(id) 时的最低 ID。

关于mysql - 总和数据库中特定列的所有行是相同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20982001/

相关文章:

MYSQL 需要先购买代码与客户总数

java - 将值从内部递归方法传递到外部方法

PHP - 如何回显列中值的总和?

php - 使用 mySQL 和 PHP 进行 jQuery 自动建议

mysql - SQL:如果为 NULL 值,则将列值向左移动

java - 获取 Spring Security ACL 查找以使用 mysql 只读副本

vba - 需要帮助求和单位重量和多级零件 list

php - 从数据库获取所有结果,但显示最低价格为 0 价格

php - PHP/Mysql 中的 Action Listener,每当有记录插入表中时?

mysql - 按月/年分组并对所有数据求和