【发布时间】:2020-02-26 10:24:50
【问题描述】:
这是一个示例数据:
create table activity as
select "2020-02-25T09:06:12" as datetime_start, "2020-02-25T09:07:31" as datetime_end, 0 as flag uniuon all
select "2020-02-25T09:16:08" as datetime_start, "2020-02-25T09:17:31" as datetime_end, 0 as flag uniuon all
select "2020-02-25T09:17:31" as datetime_start, "2020-02-25T09:27:31" as datetime_end, 1 as flag uniuon all
select "2020-02-25T09:27:31" as datetime_start, "2020-02-25T09:32:41" as datetime_end, 1 as flag uniuon all
select "2020-02-25T09:35:57" as datetime_start, "2020-02-25T09:37:31" as datetime_end, 0 as flag uniuon all
select "2020-02-25T09:49:23" as datetime_start, "2020-02-25T09:51:16" as datetime_end, 0 as flag uniuon all
select "2020-02-25T09:51:16" as datetime_start, "2020-02-25T10:03:46" as datetime_end, 1 as flag uniuon all
select "2020-02-25T10:03:46" as datetime_start, "2020-02-25T10:05:57" as datetime_end, 1 as flag uniuon all
select "2020-02-25T10:05:57" as datetime_start, "2020-02-25T10:07:31" as datetime_end, 1 as flag uniuon all
select "2020-02-25T10:07:31" as datetime_start, "2020-02-25T10:10:22" as datetime_end, 1 as flag uniuon all
select "2020-02-25T10:10:22" as datetime_start, "2020-02-25T10:12:55" as datetime_end, 1 as flag uniuon all
select "2020-02-25T10:12:55" as datetime_start, "2020-02-25T10:20:17" as datetime_end, 1 as flag uniuon all
select "2020-02-25T10:20:17" as datetime_start, "2020-02-25T10:27:40" as datetime_end, 1 as flag uniuon all
select "2020-02-25T10:27:40" as datetime_start, "2020-02-25T10:39:51" as datetime_end, 1 as flag;
我正在寻找将根据标志列计算活动块的查询。
如果标志设置为 1,则直到标志更改为 0 之后的行需要合并到单个活动块中。
上面的例子产生了 6 个活动块。
- 2020-02-25T09:06:12 - 2020-02-25T09:07:31
- 2020-02-25T09:16:08 - 2020-02-25T09:17:31
- 2020-02-25T09:17:31 - 2020-02-25T09:32:41
- 2020-02-25T09:35:57 - 2020-02-25T09:37:31
- 2020-02-25T09:49:23 - 2020-02-25T09:51:16
- 2020-02-25T09:51:16 - 2020-02-25T10:39:51
【问题讨论】:
标签: sql database group-by google-bigquery gaps-and-islands