问题遇到的现象和发生背景
问题背景: 为了记录一个城市中自动售货机的信息,统计自动售货机门的关闭次数情况,并与门的关闭设计使用寿命进行比较,数据库中的数据结构如下所示。数据本身是由内置的传感器每隔一段时间收集一次的,比如下面第一条表示的是编号为00001的机器在2021年8月20日,下午15:57:48,在城市A,门的状态为关闭,风扇状态为开启。数据的基本样式如下所示(由于数据量很大这里仅展示一部分):
Index | Machine ID | Signal Upload Time | Door Status | Fan Status | Region | Date Time |
---|---|---|---|---|---|---|
0 | 00001 | 08/20/2021 15:57:48 | closed | run | City A | 2021/08/20 |
1 | 00001 | 08/20/2021 15:59:06 | opened | closed | City A | 2021/08/20 |
2 | 00001 | 08/20/2021 16:00:22 | closed | run | City A | 2021/08/20 |
3 | 00002 | 05/10/2021 09:14:32 | closed | run | City B | 2021/05/10 |
4 | 00002 | 05/10/2021 09:15:02 | closed | run | City B | 2021/05/10 |
5 | 00002 | 05/10/2021 09:17:12 | opened | closed | City B | 2021/05/10 |
6 | 00003 | 08/03/2021 11:44:02 | closed | run | City A | 2021/08/03 |
7 | 00003 | 08/03/2021 11:45:52 | opened | closed | City A | 2021/08/03 |
8 | 00003 | 08/03/2021 11:47:17 | opened | closed | City A | 2021/08/03 |
9 | 00004 | 04/12/2021 22:44:44 | closed | run | City B | 2021/04/12 |
10 | 00004 | 04/12/2021 22:47:04 | opened | closed | City B | 2021/04/12 |
11 | 00004 | 04/12/2021 22:52:11 | opened | closed | City B | 2021/04/12 |
12 | 00004 | 04/12/2021 22:56:59 | opened | closed | City B | 2021/04/12 |
13 | 00004 | 04/12/2021 23:00:22 | closed | run | City B | 2021/04/12 |
我们将如下的两条记录定义为一次关门事件:
Index | Machine ID | Signal Upload Time | Door Status | Fan Status | Region | Date Time |
---|---|---|---|---|---|---|
1 | 00001 | 08/20/2021 15:59:06 | opened | closed | City A | 2021/08/20 |
2 | 00001 | 08/20/2021 16:00:22 | closed | run | City A | 2021/08/20 |
可以理解为,编号为00001的机器在2021年8月20日,发生了一次关门。判断的依据就是:Machine Code相同,时间顺序下的Door Status为先开门后关门,城市条件相同,故记为发生关门一次也表示(Event Times + 1)。
我想达到的效果
Month | Region | Event times (关门事件数) |
---|---|---|
August | City A | 213 |
September | City A | 212 |
October | City A | 112 |
省略 | 省略 | 省略 |
August | City B | 111 |
September | City B | 111 |
October | City B | 111 |
想要达到就是一个按照城市、月份对数据做的一个关门事件计数统计。如上述表格。
我的解答思路和尝试过的方法
-- 对于城市A的,但是不知道怎么设计这种按照时间顺序,事件计数的代码
select Door Status, Date Time
from myfile
where Region = 'City A'
求解!万分感谢!