我有一个事件表是这样的:SQL用于报告基于事件
-----------------------------------------------------------
timestamp | station | event_type | count
-----------------------------------------------------------
2013-02-22 01:00:00 | 1 | log_in | -1
2013-02-22 01:05:00 | 1 | alert | 5
2013-02-22 01:08:00 | 1 | alert | 3
2013-02-22 01:10:00 | 1 | log_out | -1
2013-02-22 01:30:00 | 2 | log_in | -1
2013-02-22 01:31:00 | 2 | alert | 2
2013-02-22 01:35:00 | 2 | log_out | -1
-----------------------------------------------------------
我如何写SQL,产生这样的报告:
--------------------------------------------------------------------------
station | log_in | log_out | count
--------------------------------------------------------------------------
1 | 2013-02-22 01:00:00 | 2013-02-22 01:10:00 | 8
2 | 2013-02-22 01:30:00 | 2013-02-22 01:35:00 | 2
--------------------------------------------------------------------------
基本上,我想总结注销登录和注销之间的警报。
有人能指点我正确的方向吗?
更新:下面的作品
JW的回答,但我做到了上面的表中的错误。对于警报事件,我不知道站点ID,所以表格应该如下所示。
-----------------------------------------------------------
timestamp | station | event_type | count
-----------------------------------------------------------
2013-02-22 01:00:00 | 1 | log_in | -1
2013-02-22 01:05:00 | -1 | alert | 5
2013-02-22 01:08:00 | -1 | alert | 3
2013-02-22 01:10:00 | 1 | log_out | -1
2013-02-22 01:30:00 | 2 | log_in | -1
2013-02-22 01:31:00 | -1 | alert | 2
2013-02-22 01:35:00 | 2 | log_out | -1
-----------------------------------------------------------
如果没有对应于log_in记录的log_out记录,报告会发生什么情况? – peterm 2013-02-22 08:15:01
理想情况下,SQL应处理该情况,即缺少的log_out与最后一次警报事件的时间相同。 – keithc 2013-02-22 11:33:10