我在示例表中输入了以下数据:
S_ID C_ID E_ID ST_DT ED_DT
100 A 11AS 01/01/2020 05/01/2020
100 A 11AS 06/01/2020 10/01/2020
100 A 11AS 11/01/2020 15/01/2020
100 A 11BT 16/01/2020 20/01/2020
100 A 11AS 21/01/2020 27/01/2020
100 A 11AS 28/01/2020 30/01/2020
下表中的预期产出:
S_ID C_ID E_ID ST_DT ED_DT
100 A 11AS 01/01/2020 15/01/2020
100 A 11BT 16/01/2020 20/01/2020
100 A 11AS 21/01/2020 30/01/2020
数据库:netezza注意:这些是来自数据的示例记录。表中还有其他e\u id。
谢谢
2条答案
按热度按时间vql8enpb1#
这是一个缺口和孤岛问题。假设没有间隙,一个简单的方法是行号的差异:
pgpifvop2#
这实际上是一个缺口和孤岛问题。这些岛屿,如@gordon linoff所说,在clickstream analysis和iot data analysis中也被称为会话。
我将得到一个会话标识符,并在最后按它分组。
嵌套完整选择,每个包含不同的olap函数,以获得的会话id的组结尾,应该可以做到以下几点:
--当
e_id
不改变,如果改变了。。。--获取刚刚获得的列的运行和
chg
,并且您有一个会话标识符。。。--现在,最后,按suid、cuid、eèid和会话分组,得到min(stèdt)和max(stèdt)。。。