Vì vậy, tôi đã có một bảng trong SQL Server 2014 lưu trữ các sự kiện. Các sự kiện được tạo không nhanh hơn một lần trong 10 giây, nhưng có thể chậm hơn nhiều (phút hoặc giờ giữa các sự kiện). Thời gian giữa các sự kiện không thống nhất.
Tôi muốn lấy mẫu các hồ sơ theo thời gian.
Chẳng hạn, tôi muốn yêu cầu lấy mẫu 10 phút - vì vậy, nó sẽ lấy bản ghi 1 và bản ghi tiếp theo phải là bản ghi ít nhất 10 phút sau, và bản tiếp theo chậm hơn ít nhất 10 phút so với hàng 2 , và như thế.
Tôi có thể đạt được điều này bằng cách tiếp cận lặp lại, lặp qua từng bản ghi, nhưng tôi muốn để cơ sở dữ liệu thực hiện công việc. Vấn đề là, tôi không biết làm thế nào để sử dụng câu lệnh set / window T-SQL.
Bất cứ ai có thể giúp tôi ra?
Dữ liệu ví dụ:
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
Kết quả như ý:
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
- Tất cả các sự kiện 2-6 đều trong vòng 10 phút của bản ghi 1, vì vậy tôi không muốn chúng.
- EventID 7 chậm hơn 24 phút so với bản ghi cuối cùng trong tập kết quả của tôi (EventID 1), vì vậy tôi thực sự muốn nó.
- EventID 8 chậm hơn 12 phút 34 giây so với bản ghi cuối cùng trong tập kết quả của tôi (EventID 7), vì vậy tôi thực sự muốn nó.
- EventID 9 chậm hơn 11 giây so với bản ghi cuối cùng trong tập kết quả của tôi (EventID 8), vì vậy tôi không muốn nó.
- EventID 10 là apx. Trễ hơn 2,5 giờ so với bản ghi cuối cùng trong tập kết quả của tôi (EventID 9), vì vậy tôi thực sự muốn nó.
2017-04-01 12:10:01
? Nó chỉ là 1 phút 1 giây sau sự kiện trước ( 2017-04-01 12:09:00
), nhưng chỉ hơn 10 phút sau sự kiện đầu tiên ( 2017-04-01 12:00:00
). Bạn có muốn xem sự kiện này trong tập kết quả?