首页 > 解决方案 > 需要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 列相同的总记录找到所有总板。

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

标签: mysql

解决方案


您可以像这样使用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分组的列给出了具有相同值的行的总和。


推荐阅读