私は、cols:id、timestamp、col1..col70 +および最大400万行の27個のマシンプロセスデータテーブルを持っています。 サンプルレートが10秒あたり1から30秒に1に変更されました。 どのような行のタイムスタンプが以前の時間的タイムスタンプの21秒以内に(各行のサンプルレートを効果的に1/30秒に変更する)、各テーブル内の行を(個別に)削除するにはどうすればよいですか? "id"または "timestamp"が任意の順序であると仮定しないでください。外部キーはありません。 "id"はIDおよび主キー列です。 これらは、非リレーショナルの履歴データテーブルです。 これは、例として1つの表の一部の行です。 サンプル間隔の早い段階では10秒、今では30秒です。SQL - 前の行の時間間隔内の行を削除する
id Timestamp
949046 2015-03-02 02:54:49.740 --(arbitrarily starting here)
949047 2015-03-02 02:54:59.757 --delete - within 21 secs of 949046
949048 2015-03-02 02:55:09.757 --delete - within 21 secs of 949046
949049 2015-03-02 02:55:19.757 --keep - > 21 secs from 949046
949050 2015-03-02 02:55:29.727 --delete - within 21 secs of **949049**
949051 2015-03-02 02:55:39.727 --delete - within 21 secs of 949049
949052 2015-03-02 02:55:49.743 --keep - > 21 secs from 949049
949053 2015-03-02 02:55:59.727 --delete - within 21 secs of **949052**
.
.
3370919 2016-10-22 10:26:23.510 --keep assuming > 21 secs from previous row
3370920 2016-10-22 10:26:53.570 --keep - > 21 secs from 3370919
3370921 2016-10-22 10:27:23.617 --keep - > 21 secs from 3370920
すでにそこにあるデータでは、すべての行のタイムスタンプ値が前回の21秒よりも短くなります。あなたがしなければならないことは、2番目のものの価値を守りたいものと捨てたいものを決めることです。同じidと同じ分の値を持つレコードの各セットと同様に、0〜29の秒値と30〜59の値の1つの行のみを保持します。 –
チャールズ、 - dateaddのmm(月)がオーバーフローを引き起こします。 mi(分)を意味していて、機能の「分」ではないですか? – Exeter
私はSQLの「知っている」ことは、あなたがこれらの質問に答えてくれるからです。私は多くの事を行うことができます。実際には必要なものすべて(空隙や島を見つけて説明したり、他のテーブルから欠落したデータを挿入するなど)をすることができます。 – Exeter