我有数据表,我想得到datain的基础上日期之间,catagory和组由部分id,我发现问题时,值part_id相同
tblpart
| 零件ID|范畴|ok|ng|总计|约会|
| --------------|--------------|--------------|--------------|--------------|--------------|
| 第一部分|规则的|五|1|六|2023-01-02 2023-01-02|
| 第二部分|装配前|四|0|四|2023-01-03 2023-01-03|
| 第三部分|装配前|五|五|10个|2023-01-03 2023-01-03|
| 第四部分|纽帕特|五|0|五|2023-01-04 2023-01-04|
| 第五部分|纽帕特|五|0|五|2023-01-02 2023-01-02|
| 第六部分|纽帕特|五|0|五|2023-01-04 2023-01-04|
| 第七部分|规则的|五|0|五|2023-01-05 2023-01-05 2023-01-05|
| 第八部分|装配前|五|0|五|2023-01-06 2023-01-06|
| 第九部分|装配前|五|0|五|2023-01-08 2023-01-08|
| 第十部分|装配前|五|0|五|2023-01-09 2023-01-09|
| 第一部分|装配前|五|0|五|2023-01-08 2023-01-08|
| 第三部分|规则的|五|0|五|2023-01-01 2023-01-01|
| 第四部分|规则的|五|0|五|2023-01-03 2023-01-03|
| 第五部分|装配前|五|0|五|2023-01-05 2023-01-05 2023-01-05|
| 第六部分|规则的|五|0|五|2023-01-06 2023-01-06|
| 第七部分|规则的|五|0|五|2023-01-07 2023-01-07|
| 第八部分|装配前|五|0|五|2023-01-08 2023-01-08|
| 第九部分|规则的|五|0|五|2023-01-02 2023-01-02|
| 第十部分|规则的|五|0|五|2023-01-02 2023-01-02|
| 第一部分|装配前|十二岁|1|十四岁|2023-01-02 2023-01-02|
| 第一部分|装配前|10个|1|十一|2023-01-03 2023-01-03|
| 第一部分|装配前|十二岁|二|十四岁|2023-01-02 2023-01-02|
我的查询
CREATE TABLE `tblpart` (
`id` int(11) NOT NULL,
`part_id` varchar(23) NOT NULL,
`category` varchar(23) NOT NULL,
`ok` int(12) NOT NULL,
`ng` int(12) NOT NULL,
`total` int(12) NOT NULL,
`datein` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `tblpart`
--
INSERT INTO `tblpart` (`id`, `part_id`, `category`, `ok`, `ng`, `total`, `datein`) VALUES
(1, 'part 1', 'regullar', 5, 1, 6, '2023-01-02'),
(2, 'part 2', 'beforeassy', 4, 0, 4, '2023-01-03'),
(3, 'part 3', 'beforeassy', 5, 5, 10, '2023-01-03'),
(4, 'part 4', 'newpart', 5, 0, 5, '2023-01-04'),
(5, 'part 5', 'newpart', 5, 0, 5, '2023-01-02'),
(6, 'part 6', 'newpart', 5, 0, 5, '2023-01-04'),
(7, 'part 7', 'regullar ', 5, 0, 5, '2023-01-05'),
(8, 'part 8', 'beforeassy', 5, 0, 5, '2023-01-06'),
(9, 'part 9', 'beforeassy', 5, 0, 5, '2023-01-08'),
(10, 'part 10', 'beforeassy', 5, 0, 5, '2023-01-09'),
(11, 'part 1', 'beforeassy', 5, 0, 5, '2023-01-08'),
(12, 'part 3', 'regullar', 5, 0, 5, '2023-01-01'),
(13, 'part 4', 'regullar', 5, 0, 5, '2023-01-03'),
(14, 'part 5', 'beforeassy', 5, 0, 5, '2023-01-05'),
(15, 'part 6', 'regullar', 5, 0, 5, '2023-01-06'),
(16, 'part 7', 'regullar', 5, 0, 5, '2023-01-07'),
(17, 'part 8', 'beforeassy', 5, 0, 5, '2023-01-08'),
(18, 'part 9', 'regullar', 5, 0, 5, '2023-01-02'),
(19, 'part 10', 'regullar', 5, 0, 5, '2023-01-02'),
(21, 'Part 1', 'beforeassy', 12, 2, 14, '2023-01-02'),
(22, 'Part 1', 'beforeassy', 10, 1, 11, '2023-01-03'),
(23, 'Part 1', 'beforeassy', 12, 2, 14, '2023-01-02');
SELECT part_id, category, sum(ok) as oke, sum(ng) as datang, sum(total) as total, datein
FROM tblpart
WHERE datein BETWEEN '2023-01-01' and '2023-01-07'
GROUP BY part_id
HAVING category ='regullar' or category ='newpart'
ORDER by datein;
我的查询结果
| 零件ID|范畴|ok|ng|总计|
| --------------|--------------|--------------|--------------|--------------|
| 第一部分|规则的|三十九|六|四十五|
| 第十部分|规则的|五|0|五|
| 第九部分|规则的|五|0|五|
| 第五部分|纽帕特|10个|0|10个|
| 第六部分|纽帕特|10个|0|10个|
| 第四部分|纽帕特|10个|0|10个|
我只想根据regularand newpart类别对相同的part_id求和。
我的期望:第1部分未求和,因为类别不同
| 零件ID|范畴|ok|ng|总计|
| --------------|--------------|--------------|--------------|--------------|
| 第一部分|规则的|五|1|六|
| 第十部分|规则的|五|0|五|
| 第九部分|规则的|五|0|五|
| 第五部分|纽帕特|10个|0|10个|
| 第六部分|纽帕特|10个|0|10个|
| 第四部分|纽帕特|10个|0|10个|
| 第三部分|规则的|五|0|五|
| 第七部分|规则的|10个|0|10个|
1条答案
按热度按时间mklgxw1f1#
GROUP BY语句将具有相同值的行分组到汇总行中
例如
您可以更新您的查询,也可以按类别分组
输出