按阶段进行MySql Count返工和SUM返工

时间:2019-02-20 19:53:26

标签: mysql

我需要一些有关MYSQL中以下查询的帮助。

我有以下SQL表:

LINK

我需要计算以下内容:

1。查询:分阶段的返工计数

例如(基于订单号749,请参阅链接) 在阶段01中,该订单已经是3次。阶段01的第一次出现将被计算为“生产”(正确的第一次)。该阶段的任何其他重复都是“返工”(过程偏差/返工)​​。 如果是订单号(749),则返工计数器为2。

2。查询:分阶段进行返工的时间(秒)(过程偏差/返工)​​ 在订购号为749的情况​​下,我已经在Excel中按阶段计算出返工的时间(以秒为单位)。我只需要通过mysql实现。 例如: My Calcualtion in Excel

在阶段“ 01.1”是该顺序的三倍。 订单的第一次出现(以秒为单位)是

360秒=“正确的第一次”

该阶段任何其他重复的总和是“返工”

流程偏差/返工= 12840秒

这是我必须通过MYSQL查询实现的功能。 请帮我。

感谢您的时间和支持。

BR, 理查德

1 个答案:

答案 0 :(得分:0)

问题已经解决:

SELECT SH.newphase , SUM(CASE WHEN SH.id = T.minid THEN TIMESTAMPDIFF(SECOND, SH.created, IFNULL(SH5.created, NOW())) ELSE 0 END) AS jo , SUM(CASE WHEN SH.id <> T.minid THEN TIMESTAMPDIFF(SECOND, SH.created, IFNULL(SH5.created, NOW())) ELSE 0 END) AS nemjo FROM Sol_Afo_History SH LEFT JOIN (SELECT SH2.orderid, SH2.newphase, MIN(SH2.id) AS minid FROM Sol_Afo_History SH2 GROUP BY SH2.orderid, SH2.newphase) T ON T.orderid = SH.orderid AND T.newphase = SH.newphase LEFT JOIN (SELECT SH3.id, (SELECT MAX(SH4.id) FROM Sol_Afo_History SH4 WHERE SH3.orderid = SH4.orderid AND SH4.id < SH3.id) AS elozid FROM Sol_Afo_History SH3) SHKOV ON SHKOV.elozid = SH.id LEFT JOIN Sol_Afo_History SH5 ON SHKOV.id = SH5.id WHERE SH.orderid='749' GROUP BY SH.newphase