Sql 如何对分组行进行编号
有一个表,其中存储了视频查看日志的数据,如下所示Sql 如何对分组行进行编号,sql,presto,Sql,Presto,有一个表,其中存储了视频查看日志的数据,如下所示 |user_id| status | time | ------------------------------------- |user_a |start |2019-06-18 00:00:00| |user_a |progress|2019-06-18 00:00:05| |user_a |progress|2019-06-18 00:00:10| |user_a |complete|2019-06-18 00:
|user_id| status | time |
-------------------------------------
|user_a |start |2019-06-18 00:00:00|
|user_a |progress|2019-06-18 00:00:05|
|user_a |progress|2019-06-18 00:00:10|
|user_a |complete|2019-06-18 00:00:15|
|user_a |start |2019-06-18 00:10:00|
|user_a |complete|2019-06-18 00:10:05|
|user_a |start |2019-06-19 00:10:00|
|user_a |start |2019-06-19 00:10:05|
|user_a |progress|2019-06-19 00:10:10|
|user_b |start |2019-06-18 00:20:00|
|user_b |progress|2019-06-18 00:20:05|
|user_b |progress|2019-06-18 00:20:10|
我想为状态为“开始”到“开始”的行指定相同的编号,每个用户id如下所示
id|user_id| status | time |
-------------------------------------
1|user_a |start |2019-06-18 00:00:00|
1|user_a |progress|2019-06-18 00:00:05|
1|user_a |progress|2019-06-18 00:00:10|
1|user_a |complete|2019-06-18 00:00:15|
2|user_a |start |2019-06-18 00:10:00|
2|user_a |complete|2019-06-18 00:10:05|
3|user_a |start |2019-06-19 00:10:00|
4|user_a |start |2019-06-19 00:10:05|
4|user_a |progress|2019-06-19 00:10:10|
1|user_b |start |2019-06-18 00:20:00|
1|user_b |progress|2019-06-18 00:20:05|
1|user_b |progress|2019-06-18 00:20:10|
有没有办法用sql进行聚合?
我使用的是普雷斯托。使用累计总和:
select t.*,
sum(case when status = 'start' then 1 else 0 end) over (partition by user_id order by time) as id
from t;