dbase中的数据每分钟收集一次。 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.
答案 0 :(得分:0)
您的问题有点难以理解。您的样本数据中没有weld_time
列。问题中没有weld_minutes
。这些可能是相关的。
如果您要比较的列是 string ,而不是数字,则会看到此问题。我建议您将其转换为数字(整数,数字,浮点数)以进行比较。
由于数据和问题不同步,我在描述解决方案而不是写代码。