小编Fen*_*der的帖子

根据时间戳之间的间隔对时间戳进行分组

我在Hive(SQL)中有一个表,其中包含一堆时间戳,需要对这些时间戳进行分组,以便根据时间戳之间的时间差创建单独的会话.

示例:考虑以下时间戳(为简单起见,在HH:MM中给出): 9.00 9.10 9.20 9.40 9.43 10.30 10.45 11.25 12.30 12.33 等等.

所以现在,所有落在下一个时间戳30分钟内的时间戳都在同一个会话下,即9.00,9.10,9.20,9.40,9.43表格1会话.

但由于9.43和10.30之间的差异超过30分钟,时间戳10.30属于不同的会话.同样,10.30和10.45属于一个会议.

在我们创建了这些会话之后,我们必须获得该会话的最小时间戳和最大时间戳.

我尝试用LEAD减去当前时间戳,如果大于30分钟则放置一个标志,但我对此有困难.

你们的任何建议将不胜感激.如果问题不够清楚,请告诉我.

此样本数据的预期输出:

Session_start   Session_end
9.00                9.43
10.30               10.45
11.25               11.25 (same because the next time is not within 30 mins)
12.30               12.33
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

sql session select hive group-by

4
推荐指数
1
解决办法
940
查看次数

标签 统计

group-by ×1

hive ×1

select ×1

session ×1

sql ×1