计算一行进入时间在所有其他行的进入和退出时间之内的次数

Count how many times a rows enter time is within the enter and exit times of all other rows

我希望在记录进入队列时估算历史数据的队列长度。我想通过计算数据集中有多少行的输入时间小于记录的输入时间,以及退出时间大于记录的输入时间来做到这一点。

我创建了一个分隔日期和时间的数据集,我认为这会更容易使用,但我无法计算数据集中每条记录的行数。我已经尝试做一个简单的聚合计数,它适用于单行,但我不知道如何进行查询来对数据集中的每一行进行计数。

例如,我有一个如下所示的数据集:

RecordID | Enter_Date_Time       | Exit_Date_Time
1          2020-09-01 6:00:00 AM   2020-09-02 7:00:00 AM
2          2020-09-01 6:00:00 AM   2020-09-02 8:00:00 AM
3          2020-09-03 4:00:00 AM   2020-09-03 3:00:00 PM
4          2020-09-02 4:00:00 AM   2020-09-04 6:00:00 AM
5          2020-09-02 6:00:00 AM   2020-09-02 8:00:00 AM
6          2020-09-05 6:00:00 AM   2020-09-07 7:00:00 PM
7          2020-09-07 3:00:00 AM   2020-09-07 9:00:00 AM
8          2020-09-07 6:00:00 AM   2020-09-08 8:00:00 AM
9          2020-09-08 6:00:00 AM   2020-09-08 9:00:00 PM
10         2020-09-08 4:00:00 AM   2020-09-09 6:00:00 AM

我希望它看起来像这样:

RecordID | Enter_Date_Time       | Exit_Date_Time        | Queue_Length
1          2020-09-01 1:00:00 AM   2020-09-02 7:00:00 AM   1
2          2020-09-01 6:00:00 AM   2020-09-02 8:00:00 PM   2
3          2020-09-03 4:00:00 AM   2020-09-03 3:00:00 PM   2
4          2020-09-02 4:00:00 AM   2020-09-04 6:00:00 AM   2
5          2020-09-02 6:00:00 AM   2020-09-02 6:00:00 AM   3
6          2020-09-05 6:00:00 AM   2020-09-07 7:00:00 PM   1
7          2020-09-07 3:00:00 AM   2020-09-07 9:00:00 AM   2 
8          2020-09-07 6:00:00 AM   2020-09-08 8:00:00 AM   3
9          2020-09-08 6:00:00 AM   2020-09-08 9:00:00 PM   2
10         2020-09-08 4:00:00 AM   2020-09-09 6:00:00 AM   1

我当前的一条记录查询如下所示,并手动输入该行的时间:

SELECT COUNT(*) 
FROM tbl
WHERE Enter_Date_Time >= '2020-09-02 6:00:00 AM'
   AND Exit_Date_Time <= '2020-09-02 6:00:00 AM'

我需要对数据集中的每一行执行这样的简单操作,并将 where 子句中的时间作为记录的输入时间。

非常感谢您的专业知识!

一个选项使用相关子查询:

select
    t.*,
    (
        select 1 + count(*)
        from mytable t1
        where t1.enter_date_time < t.enter_date_time and t1.exit_date_time > t.enter_date_time
    ) queue_length
from mytable t