0

我有一个数据库,可以在用户经过节点时获取用户的 MAC 地址。该节点的位置使得他们在进入和离开场地时必须通过它。我想知道在任何给定时间有多少访客在场(连续会很好,但离散的 X 分钟块也可以)。

通过以下查询,我得到以下结果:

SELECT MACAddress, MIN(fg_HubDataTable.timeOfRec) as entryTime, MAX(fg_HubDataTable.timeOfRec) as exitTime
FROM fg_HubDataTable
WHERE fg_HubDataTable.venueID = 2 AND eventDate = '2013-02-22'
GROUP BY fg_HubDataTable.MACAddress, fg_HubDataTable.eventDate
HAVING TIMESTAMPDIFF(SECOND, MIN(fg_HubDataTable.timeOfRec), MAX(fg_HubDataTable.timeOfRec)) > 120

数据顺序为:MAC地址、进入时间、退出时间

001CB3BAXXXX    2013-02-22 22:05:05 2013-02-23 00:34:09
001F1FA8XXXX    2013-02-23 01:17:06 2013-02-23 02:49:12
002608A8XXXX    2013-02-22 18:09:05 2013-02-22 19:12:05
0026BB9DXXXX    2013-02-22 23:13:03 2013-02-23 01:30:04
0026FF6DXXXX    2013-02-22 23:32:06 2013-02-23 01:26:03
4

1 回答 1

0

有一段时间X,如果游客V最近的入口En有 atime < X的时间晚于他们最近的出口Ex有一个time < XOR 没有出口有time < Xa

例如,如果访客在 t = 2 进入,在 t = 3 退出,在 t = 4 进入并在 t = 5 退出,那么他们在 t = 2.5 时在公园内(因为他们还没有离开),而不是在公园内在 t = 3.5(因为他们最近的出口 < 3.5 晚于他们最近的入口),在公园中 t = 4.5(因为他们最近的入口 < 4.5 晚于他们最近的出口)等等。

使用此信息,您可以构建一个查询,针对给定时间戳计算在该时间戳期间将在公园内的所有游客,并将其作为数字吐出,并在特定的时间戳集上运行查询(例如每分钟或每小时)。

于 2013-03-04T02:59:30.333 回答