【发布时间】:2021-01-02 14:33:53
【问题描述】:
我希望在记录进入队列时估计历史数据的队列长度。我想通过计算数据集中有多少行的输入时间小于记录的输入时间和退出时间大于记录的输入时间来做到这一点。
我创建了一个分隔日期和时间的数据集,我认为这样可以更容易使用,但我无法获取数据集中每条记录的行数。我试过做一个简单的聚合计数,它适用于单行,但我不知道如何进行查询来对数据集中的每一行进行计数。
例如,我有一个如下所示的数据集:
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 子句中的时间作为记录的输入时间。
非常感谢您的专业知识!
【问题讨论】:
标签: mysql sql datetime count subquery