Итак, у меня есть набор данных в Афине, поэтому для целей этого вы, вероятно, можете рассматривать его как базу данных postgres.Образец данных можно увидеть в этой sql fiddle .
Вот пример:
create table vals (
timestamp int,
type varchar(25),
val int
);
insert into vals(timestamp,type, val)
values (10, null, 1),
(20, null, 2),
(39, null, 1),
(40,'p',1),
(50,'p',2),
(60,'p',1),
(70,'v',5),
(80,'v',6),
(90,'v',6),
(100,'v',3),
(110,null,3),
(120,'v',6),
(130,null,3),
(140,'p',10),
(150,'p',8),
(160,null,3),
(170,'p',1),
(180,'p',2),
(190,'p',2),
(200,'p',1),
(210,null,3),
(220,'v',1),
(230,'v',1),
(240,'v',3),
(250,'v',41)
Я хотел бы получить набор данных, которыйвключает в себя все значения, но выделяет самое высокое значение 'p' и самое низкое значение смежных 'v.
, поэтому в конечном итоге я получу:
timestamp, type, value, is_peak
(10, null, 1, null),
(20, null, 2, null),
(39, null, 1, null),
(40,'p',1, null),
(50,'p',2, 1),
(60,'p',1, null),
(70,'v',5, null),
(80,'v',6, null),
(90,'v',6, null),
(100,'v',3, 1),
(110,null,3, null),
(120,'v',6, 1),
(130,null,3, null),
(140,'p',10, 1),
(150,'p',8, null),
(160,null,3, null),
(170,'p',1, null),
(180,'p',2, 1),
(190,'p',2, null), -- either this record or 180 would be fine
(200,'p',1, null),
(210,null,3, null),
(220,'v',1, 1), -- again either this or 230
(230,'v',1, null),
(240,'v',3, null),
(250,'v',41, null)
- пик имеетмного вариантов для типа, если бы это был какой-то дипарандж или инкрементное число, которое было бы хорошо.Точно так же я могу быть уверен, что в смежном наборе «помеченный» является самым высоким или самым низким значением.
Удачи, оцените ассист
Примечание: пик максимума пиковили мин долины могут быть где угодно в смежном множестве, но как только тип меняется, мы начинаем заново.