Ich habe also eine Tabelle in SQL Server 2014, in der Ereignisse gespeichert sind. Ereignisse werden nicht schneller als einmal pro 10 Sekunden generiert, können jedoch viel langsamer sein (Minuten oder Stunden zwischen Ereignissen). Die Zeit zwischen den Ereignissen ist nicht einheitlich.
Ich möchte die Aufzeichnungen nach Zeit abtasten.
Zum Beispiel möchte ich um eine 10-minütige Abtastung bitten - also würde es Datensatz 1 erfassen, und der nächste Datensatz sollte mindestens 10 Minuten später sein, und der nächste ist mindestens 10 Minuten später als Zeile 2 , und so weiter.
Ich kann dies mit einem iterativen Ansatz erreichen, bei dem jeder Datensatz durchlaufen wird, aber ich möchte, dass die Datenbank die Arbeit erledigt. Das Problem ist, ich weiß nicht, wie ich das mit T-SQL set / window-Anweisungen machen soll.
Kann mir jemand helfen?
Beispieldaten:
EventID | RecordTime
--------+--------------------
1 | 2017-04-01 12:00:00
2 | 2017-04-01 12:00:10
3 | 2017-04-01 12:00:20
4 | 2017-04-01 12:00:32
5 | 2017-04-01 12:05:42
6 | 2017-04-01 12:09:00
7 | 2017-04-01 12:24:12
8 | 2017-04-01 12:36:46
9 | 2017-04-01 12:36:57
10 | 2017-04-01 15:00:00
Erwünschtes Ergebnis:
EventID | RecordTime
--------+--------------------
1 | 2017-04-01 12:00:00
7 | 2017-04-01 12:24:12
8 | 2017-04-01 12:36:46
10 | 2017-04-01 15:00:00
- Die EventIDs 2-6 befinden sich alle innerhalb von 10 Minuten nach Datensatz 1, daher möchte ich sie nicht.
- EventID 7 ist 24 Minuten 12 Sekunden später als der letzte Datensatz in meiner Ergebnismenge (EventID 1), also möchte ich es.
- EventID 8 ist 12 Minuten 34 Sekunden später als der letzte Datensatz in meiner Ergebnismenge (EventID 7), also möchte ich es.
- EventID 9 ist 11 Sekunden später als der letzte Datensatz in meiner Ergebnismenge (EventID 8), daher möchte ich es nicht.
- EventID 10 ist apx. 2,5 Stunden später als der letzte Datensatz in meiner Ergebnismenge (EventID 9), also möchte ich es.
2017-04-01 12:10:01
? Es ist nur 1 Minute 1 Sekunde nach dem vorherigen Ereignis ( 2017-04-01 12:09:00
), aber es ist mehr als 10 Minuten nach dem ersten Ereignis ( 2017-04-01 12:00:00
). Möchten Sie dieses Ereignis in der Ergebnismenge sehen?