Данные в базе данных собираются раз в минуту. Weld_Minutes будет увеличиваться до сброса в конце смены или смены продукта. Код находит пик Weld_Minutes. К сожалению, он видит переход от 9 до 10 минут в виде пика, а также от 99 до 100 минут. Я не знаю, почему. Также я нуб.
select
case when pt = 1 then DateInserted end as Day_and_Time,
case when pt = 1 then Weld_Time end as Weld_Minutes,
case when pt = 1 then Ft_Ran end as Feet_Ran
from (
select *, case
when DateInserted BETWEEN '2019-05-19 06:00:00' AND '2019-05-21 06:10:00'
and lag(Weld_Time) over(order by DateInserted) <= Weld_Time
and lead(Weld_Time) over(order by DateInserted) < Weld_Time then 1 -- peak
end as pt
from mill_30
) sq
where pt is not null;
Результаты запроса:
+-------------------------+--------------+----------+
| Day_and_Time | Weld_Minutes | Feet_Ran |
+-------------------------+--------------+----------+
| 2019-05-20 09:40:54.157 | 9 | 208 |
| 2019-05-20 16:51:00.130 | 34 | 595 |
| 2019-05-20 17:48:01.207 | 9 | 148 |
| 2019-05-20 20:48:01.567 | 99 | 1628 |
| 2019-05-21 01:06:04.083 | 308 | 5933 |
| 2019-05-21 01:15:04.263 | 9 | 185 |
| 2019-05-21 01:41:04.217 | 34 | 721 |
+-------------------------+--------------+----------+
The Weld_Minutes 9, 9, 99, and 9 are not peaks. 34, 308, and 34 are the correct peaks.