如何将最后两个事件合并为一行

时间:2017-08-21 19:53:52

标签: sql data-science log-analysis

我有一张如下表格。

date         id    event      keyword   val     pattern_id()
2017-08-01   001   triggerX   abc       (null)  1
2017-08-01   001   triggerY   (null)     3      1
2017-08-01   009   triggerX   cde       (null)  2
2017-08-01   010   triggerX   ghi       (null)  3
2017-08-01   010   triggerX   ghi       (null)  3
2017-08-01   010   triggerX   ghi       (null)  3
2017-08-01   010   triggerY   (null)     1      3
(list continues..)

事件triggerX后面会是triggerY(反之亦然)。 有可能只有像id 009那样的triggerX(没有triggerY)。 但是,没有机会只触发。

我想做的是跟随。

例如id 001,我想将triggerX关键字列和triggerY val列合并为一行。

例如id 010.它有四个事件,但我只需要最后两个事件(last triggerX和Y)和merge关键字列和val列。这将在下面给我。

date        id   keyword   val
2017-08-01  001  abc       3
2017-08-01  010  ghi       1

你能帮我弄清楚如何构造SQL以获得如上所示的结果吗?

1 个答案:

答案 0 :(得分:1)

我认为这可以满足您的需求:

select date_id, id, max(event), max(keyword)
from t
where keyword in ('triggerX', 'triggerY')
group by date_id, id
having count(distinct keyword) = 2;