mysql - 需要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 列相同的总记录找到所有总板。
如果仍然不清楚,请告诉我。
解决方案
您可以像这样使用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
分组的列给出了具有相同值的行的总和。
推荐阅读
- php - 如何在评论标题中插入 wordpress 帖子值?
- telegram-bot - 如何使用 unreal4u 电报 API 对电报机器人中的内联查询做出响应
- javascript - 在 javascript 中的位操作代码中体验无限循环
- node.js - 我如何在 .save 函数后使用 pre hook 填充文档
- javascript - 正确打破火力基地 forEach 循环
- java - JetBrains Exposed 在尝试创建事务时抛出错误
- batch-file - 批量颜色提取到 csv 标准化
- python - 为什么 Django 在多表继承中隐式创建类型为 parent 的对象?
- php - 如何修复“可恢复的致命错误:类闭包的对象无法在...中转换为字符串”
- sql-server - 根据另一个表中的数据约束一个数据库表条目