Mysql - 根据其他值获取所有不同行的总和

Ame*_*mza 5 mysql sql

我有一张看起来像这样的桌子,

+-----+--------+-------+
| num | amount | value |
+-----+--------+-------+
|   1 |     12 |     1 |
|   1 |     12 |     1 |
|   2 |     13 |     1 |
|   4 |     15 |     0 |
|   2 |     13 |     1 |
|   3 |     14 |     1 |
|   3 |     14 |     1 |
|   1 |     12 |     1 |
+-----+--------+-------+
Run Code Online (Sandbox Code Playgroud)

我想根据不同的“num”列对“金额”列求和,其中“值”等于 1,例如,在运行以下查询后,

select DISTINCT num, amount, value from test where value =1 ;
Run Code Online (Sandbox Code Playgroud)

不同的基于“num”的表是

+-----+--------+-------+
| num | amount | value |
+-----+--------+-------+
|   1 |     12 |     1 |
|   2 |     13 |     1 |
|   3 |     14 |     1 |
+-----+--------+-------+
Run Code Online (Sandbox Code Playgroud)

所以我希望最终结果是

12+13+14 = 39。

还有一件事是

我不能使用子查询。

因为它也已经是另一个查询的一部分。

这是我的表的脚本是

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `test`
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `num` int(11) DEFAULT NULL,
  `amount` int(11) DEFAULT NULL,
  `value` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO `test` VALUES ('1', '12', '1');
INSERT INTO `test` VALUES ('1', '12', '1');
INSERT INTO `test` VALUES ('2', '13', '1');
INSERT INTO `test` VALUES ('4', '15', '0');
INSERT INTO `test` VALUES ('2', '13', '1');
INSERT INTO `test` VALUES ('3', '14', '1');
INSERT INTO `test` VALUES ('3', '14', '1');
INSERT INTO `test` VALUES ('1', '12', '1');
Run Code Online (Sandbox Code Playgroud)

小智 0

 select num,sum(amount)/Count(*)
 from test
 where value = 1
 group by num
 order by num
Run Code Online (Sandbox Code Playgroud)