需要mysql查询以找到每个匹配查询的总和

时间:2019-06-23 10:07:30

标签: mysql

我需要根据数据库表中某些匹配的列值来找到特定列的总和。

请检查我使用的mysql表:

CREATE TABLE IF NOT EXISTS `plant_production_items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `plant_production_id` int(11) NOT NULL,
  `materialid` int(11) NOT NULL,
  `packaging_id` int(11) NOT NULL,
  `grade_id` int(11) NOT NULL,
  `slabs` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `material_purchase_id` (`plant_production_id`),
  KEY `grade_id` (`grade_id`),
  KEY `packaging_id` (`packaging_id`),
  KEY `slabs` (`slabs`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=104 ;

值如下:

INSERT INTO `plant_production_items` (`id`, `plant_production_id`, `materialid`, `packaging_id`, `grade_id`, `slabs`) VALUES
(5, 4, 22, 85, 29, 4444),
(6, 5, 22, 14, 25, 3234),
(8, 6, 27, 21, 60, 4444),
(11, 8, 22, 85, 29, 44444),
(19, 7, 22, 84, 29, 434),
(75, 10, 26, 0, 51, 1233),
(76, 10, 24, 17, 34, 251),
(78, 10, 26, 0, 46, 3234),
(91, 9, 27, 21, 57, 1000),
(92, 9, 27, 21, 57, 2000),
(93, 3, 23, 16, 32, 5000),
(94, 3, 27, 21, 54, 3233),
(101, 3, 27, 21, 0, 700),
(103, 3, 29, 27, 0, 6666);

我希望根据以下各列中的唯一值获得“平板”各列的总和:

plant_production_id
  materialid
  packaging_id   grade_id

简而言之,我们需要找到上述所有4个值的组合,并需要显示“ slabs”列的总和。

例如:

有两个相同的记录:

(91, 9, 27, 21, 57, 1000),
(92, 9, 27, 21, 57, 2000),

所以在这里我想得到总金额,即 1000 + 2000 = 3000

输出应该是所有带有总平板的列。不需要我们匹配所有以上4列。实际上,我们需要根据与以上4列相同的总记录找到所有总平板。

如果仍然不清楚,请告诉我。

1 个答案:

答案 0 :(得分:1)

您可以这样使用 GROUP BY


SELECT
plant_production_id,
materialidm,
packaging_id,
grade_id,
SUM(`slabs`) slabs_sum
FROM plant_production_items
GROUP BY plant_production_id, materialidm, packaging_id, grade_id;

因此,它为行分组的列具有相同值的行的slabs之和。