gpt4 book ai didi

MySQL条件SELECT并根据条件计算值

转载 作者:行者123 更新时间:2023-11-30 22:17:29 25 4
gpt4 key购买 nike

我有一张表,其结构为:

date (DATE)
time (TIME)
quantity_ok (INT)
quantity_ng (INT)
shift (INT)
target (DECIMAL)

它包含给定生产线的生产数据。这里的问题是,类次不会在 00:00:00 更改,而是在 23:00:00 更改(3 个类次,07-15、15-23、23-07)。

在此表中,我已经有了给定类次的“正确”日期(今天 00:00:00 - 07:00:00 之间的生产具有昨天的日期,因为它属于昨天的第 3 个类次)。

我必须根据想法计算目标的实际百分比:

(SUM(Quality_ok) for given shift)/(nr. of min. from the start of the shift)*target

我正在做的是:

SELECT
`date`,
SUM(quantity_ok) AS `SUM(quantity_ok)`,
(TIME_TO_SEC(NOW()) - TIME_TO_SEC('07:00:00'))/60*`target` AS actual_target,
SUM(quantity_ok)/((TIME_TO_SEC(NOW()) - TIME_TO_SEC('07:00:00'))/60*`target`)*100 AS `Actual % of target`,
`time`
FROM U126_td
WHERE (`date` = CURDATE())

以上适用于第一个类次,对于第二个类次,它给出了总和的实际百分比(我需要它从 15:00 重置为零),并且在 00:00-07:00 没有给出结果.

我应该有条件地根据类次进行计算,但在这里我迷路了。

感谢您的回答!

编辑 2:因为我想出了一些似乎有效的东西:

SELECT
`date`, `time`, `actshift`,
SUM(quantity_ok) AS `SUM(quantity_ok)`,
MAX(shift) AS `MAX(shift)`,
MAX(`time`) AS `MAX(time)`,
CASE actshift WHEN 1 THEN
SUM(quantity_ok)/((TIME_TO_SEC(NOW()) - TIME_TO_SEC('07:00:00'))/60*`target`)*100
WHEN 2 THEN
SUM(quantity_ok)/((TIME_TO_SEC(NOW()) - TIME_TO_SEC('15:00:00'))/60*`target`)*100
WHEN 3 THEN
CASE MAX(`time`) WHEN MAX(`time`)<'07:00:00' THEN
SUM(quantity_ok)/((TIME_TO_SEC(NOW()) - TIME_TO_SEC('00:00:00'))/60*`target`)*100
ELSE
SUM(quantity_ok)/((TIME_TO_SEC(NOW()) - TIME_TO_SEC('23:00:00'))/60*`target`)*100
END
END AS `Actual % of target`
FROM U126_td
WHERE (`date` = CURDATE())

当然,所有这些东西都需要稍微清理一下:-)

最佳答案

我需要一些示例数据和所需的输出来提出完整的查询设计,但基本上您不需要计算类次的开始时间,甚至不需要计算您所在的类次来计算它有多长自轮类开始以来。

您只需在相关时间值上加一小时来处理与午夜的偏移量,然后除以轮类时长后得出余数。

-- How many seconds have passed since the current shift started?
SELECT TIME_TO_SEC(NOW() + INTERVAL 1 HOUR) % 28800;
-- Or in minutes:
SELECT FLOOR(TIME_TO_SEC(NOW() + INTERVAL 1 HOUR) / 60) % 480;

关于MySQL条件SELECT并根据条件计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37787743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com