mysql: время простоя из диапазона дат ежечасно / ежедневно

Я хотел бы отслеживать время простоя машины / производительность на почасовой основе. Предполагая, что ниже приведены данные из 2 таблиц. Я использую метку времени Unix, но для этого примера я использовал дату / время для удобства

Table 1 - Output
mc    date/time         output
1    2015-01-24 00:00   10
1    2015-01-24 01:30   5
1    2015-01-24 04:00   5
1    2015-01-24 04:30   10

Table 2 - Downtime
mc   machine stop        machine start
1    2015-01-24 02:15    2015-01-24 03:55Output I need

mc   date     hr      output         downtime
1    24 Jan   0       10             0
1    24 Jan   1       5              0
1    24 Jan   2       0              45min ( since machine stopped at 02:25 )
1    24 Jan   3       0              55min ( since machine up at 03:55 )

….скоро

Редактировать :
Это будет 24-часовой скользящий отчет, так как час и дата будут динамическими

Благодарим вас за помощь, надеюсь, это решение будет применимо и к ежемесячным запросам.

Добавлять —
Это лучшее, что я когда-либо делал, sqlfiddle ниже

SELECT lt.date, lt.mc, lt.output, rt.dt FROM
(SELECT mc, DATE_FORMAT(FROM_UNIXTIME(timestamp),'%Y%m%d %H:00') as date,
sum(output) as output
FROM production
GROUP BY
DATE_FORMAT(FROM_UNIXTIME(timestamp),'%Y%m%d %H:00')
) lt
LEFT JOIN (
SELECT DATE_FORMAT(FROM_UNIXTIME(machine_stop),'%Y%m%d %H:00') as date,
machine_stop,
sum(machine_start-machine_stop) as dt, mc
FROM downtime
GROUP BY
DATE_FORMAT(FROM_UNIXTIME(machine_stop),'%Y%m%d %H:00')
) AS rt
ON   lt.date= rt.date
UNION
SELECT rt.date, rt.mc, lt.output, rt.dt FROM
(SELECT mc, DATE_FORMAT(FROM_UNIXTIME(timestamp),'%Y%m%d %H:00') as date,
sum(output) as output
FROM production
GROUP BY
DATE_FORMAT(FROM_UNIXTIME(timestamp),'%Y%m%d %H:00')
) lt
RIGHT JOIN (
SELECT DATE_FORMAT(FROM_UNIXTIME(machine_stop),'%Y%m%d %H:00') as date,
machine_stop,
sum(machine_start-machine_stop) as dt, mc
FROM downtime
GROUP BY
DATE_FORMAT(FROM_UNIXTIME(machine_stop),'%Y%m%d %H:00')
) AS rt
ON   lt.date= rt.date
ORDER BY date asc

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]