緊急インシデントに関連するデータを含むテーブルがあります。重複するインシデントの数を (時間ごとに) 比較したいと考えています。データベースは本質的に順序付けされていないことはわかっていますが、インシデントの開始 (および終了) 時刻があるため、レコードを時間順に並べることができます。
最終結果は、各レコードと、インシデントが重複しているかどうかを示す追加のフィールドを含む結果セットになると思います (なしの場合は 0、1 つの重複の場合は 1、2 つの重複の場合は 2...)。歴史的に、オーバーラップの数は限られています (現在の最大値は 6 です) が、それ以上のオーバーラップを持つことも可能です。
現在、私はExcelでこの種の分析を行っており、現在のレコードと以前のレコードを比較して重複があるかどうか(または重複があるかどうか)を判断するヘルパー列を使用していますが、これを達成できるはずです厳密に SQL 内。
編集: これは Excel のサンプルですが、データは単一の SQL テーブルに保持されます。私はデータベースの管理者特権を持っているので、データベース構造 (COTS システム) を変更することを除いて、ほぼすべてのソリューションを実装できます。オーバーラップ列の式を含めました。また、サンプル フォーミュラを 2 つのオーバーラップで停止しましたが、回答を実装するときにさらに説明します。
Incident Start End Overlap Overlap Formula
1 2012-01-01 07:00 2012-01-01 08:00
2 2012-01-02 07:00 2012-01-02 08:00 0 =IF(C2>B3,1,0)
3 2012-01-02 07:30 2012-01-02 08:30 1 =IF(C3>B4,IF(C2>B4,2,1),0)
4 2012-01-03 07:00 2012-01-03 08:00 0 =IF(C4>B5,IF(C3>B5,2,1),0)
5 2012-01-04 07:00 2012-01-04 08:00 0 =IF(C5>B6,IF(C4>B6,2,1),0)
6 2012-01-04 07:30 2012-01-04 08:30 1 =IF(C6>B7,IF(C5>B7,2,1),0)
7 2012-01-04 07:45 2012-01-04 08:45 2 =IF(C7>B8,IF(C6>B8,2,1),0)
8 2012-01-04 08:45 2012-01-04 09:45 0 =IF(C8>B9,IF(C7>B9,2,1),0)
9 2012-01-05 07:00 2012-01-05 08:00 0 =IF(C9>B10,IF(C8>B10,2,1),0)