данные с 15-минутным интервалом:
Time Value
2010-01-01 00:15 3
2010-01-01 00:30 2
2010-01-01 00:45 4
2010-01-01 01:00 5
2010-01-01 01:15 1
2010-01-01 01:30 3
2010-01-01 01:45 4
2010-01-01 02:00 12
2010-01-01 02:15 13
2010-01-01 02:30 12
2010-01-01 02:45 14
2010-01-01 03:00 15
2010-01-01 03:15 3
2010-01-01 03:30 2
2010-01-01 03:45 3
2010-01-01 04:00 5
..........
..........
..........
2010-01-02 00:00
Обычно набирается 96 очков.
В соответствии со значениями мы можем заметить, что значения от 00:15 до 01:45 близки друг к другу, а с 02:00 до 03:00 они близки друг к другу, а с 03:15 до 04:00 они близко друг к другу.
Основываясь на правиле "близко друг к другу", я хочу, чтобы данные были "сгруппированы" в 3 части:
- 00: 15 до 01: 45
- 02: 00–03: 00
- 03: 15–04: 00
Пожалуйста, примите во внимание, что данные могут быть случайными и могут быть сгруппированы более чем в 3 части в соответствии с правилом, определенным выше, но максимум не должен превышать 10 частей. И группировка должна учитывать временную последовательность, например, вы не можете просто поместить 00: 15/02: 30/04: 45 в 1 группу, потому что эти 3 пункта НЕ являются последовательными.
Пожалуйста, расскажите, как реализовать это в t-sql.
Последнее обновление:
Значение может быть:
Time Value
2010-01-01 00:15 3
2010-01-01 00:30 2
2010-01-01 00:45 4
2010-01-01 01:00 5
2010-01-01 01:15 1
2010-01-01 01:30 3
2010-01-01 01:45 4
2010-01-01 02:00 12
2010-01-01 02:15 13
2010-01-01 02:30 4 --suddenly decreased
2010-01-01 02:45 14
2010-01-01 03:00 15
2010-01-01 03:15 3
2010-01-01 03:30 2
2010-01-01 03:45 3
2010-01-01 04:00 5
..........
..........
..........
2010-01-02 00:00
для таких ситуаций нам не следует группировать 02:30 отдельно, потому что мы хотим, чтобы размер группы был не менее 3 баллов, и мы поместим эту точку (02:30) в предыдущую группу (от 02 : С 00 до 03:00).