我已经创建了一个查询,其中有设备标识符,包括min(first\u login\u datetime)、min(first\u purchase\u datetime)和push\u datetime列表(每个设备可能接收到多个push)。单个设备见下表示例。
我正在尝试筛选出在第一个登录日期时间和第一个购买日期时间之间接收到推送的设备。所讨论的设备(请参阅下表中的设备a)在第一个登录日期时间和第一个购买日期时间之间以及第一个购买日期时间之后都接收到推送。因此,我无法为“其中push\u datetime不在first\u login\u datetime和first\u purchase\u datetime之间”添加筛选条件,因为这将删除介于两者之间的push\u datetime示例,但设备\u a仍保留在我的队列中,因为在first\u purchase\u datetime之后接收到推送,即使设备在两个日期时间之间仍然有一个推送。我需要能够从查询中完全删除这个设备(以及任何在两个日期时间之间有推送的设备),有什么建议吗?
device_id first_login_datetime first_purchase_datetime push_datetime
1 device_a 2020-06-27T00:26:10 2020-07-02T19:35:05 2020-06-28T20:00:14.187559
2 device_a 2020-06-27T00:26:10 2020-07-02T19:35:05 2020-07-01T20:07:13.020859
3 device_a 2020-06-27T00:26:10 2020-07-02T19:35:05 2020-07-01T23:52:33.943492
4 device_a 2020-06-27T00:26:10 2020-07-02T19:35:05 2020-07-03T16:10:09.884610
5 device_a 2020-06-27T00:26:10 2020-07-02T19:35:05 2020-07-03T19:46:51.505925
2条答案
按热度按时间rn0zuynd1#
您需要获取要删除的不同设备,然后对原始表进行左联接。
这将从任何符合排除条件的设备中删除所有记录。
gopyfrb32#
我认为窗口函数是最简单(也是最快)的解决方案: