DB テーブルに次のデータがあり、開始時間と終了時間に基づいて同時トランザクションを見つけたいと考えています。
Patient Start Time End Time
John 08:31A 10:49A
Jim 10:14A 10:30A
Jerry 10:15A 10:28A
Alice 10:18A 12:29P
Bobby 10:32A 10:49A
Sally 10:46A 10:55A
Jane 10:52A 11:29A
Jules 10:54A 11:40A
Adam 10:58A 11:25A
Ben 11:00A 11:20A
Ann 11:31A 11:56A
Chris 11:49A 11:57A
Nick 12:00P 12:21P
Dave 12:00P 12:35P
Steve 12:23P 12:29P
特定の入力と重複する時間を見つけたい場合、どのように記述すればよいでしょうか? たとえば、10:58A-11:25A 時間との重複を見つけたいとします。これは、潜在的な同時並行性を見つける必要があります。同時オーバーラップの最大数を探しています。10:58A-11:25A の例では、次のように表示します (カウントは 5 になります)。
Patient Start Time End Time
Alice 10:18A 12:29P
Jane 10:52A 11:29A
Jules 10:54A 11:40A
Adam 10:58A 11:25A
Ben 11:00A 11:20A
2 番目の例では、同時実行時間の一部が探している時間と重複していますが、別の範囲が始まる前に終了しています。たとえば、10:46A ~ 10:55A を探しているとします。この例では、08:31A-10:49A は 10:52A-11:29A が開始する前に終了しているため、ドロップされます。10:32A~10:49Aも同様で、10:52A~11:29A開始前に終了。したがって、10:46A ~ 10:55A の範囲で最も同時発生するのは 4 ですが、全体では 6 (2 がドロップ) です。
Patient Start Time End Time
Alice 10:18A 12:29P
Sally 10:46A 10:55A
Jane 10:52A 11:29A
Jules 10:54A 11:40A
これはSQLステートメントで行うことができますか?