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_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|
从上表中,我想计算每个用户观看每个视频的时间

下图

|user_id|views_num|time(second) |
|user_a |1        |15           |
|user_a |2        |5            |
|user_b |1        |10           |
日志每5秒记录一次

有没有办法用sql进行聚合


我正在使用presto。

可以从下面获得预期的输出

使用子查询作为同一表上的列表达式

在PrestoDB中使用date_diff,而不是postgre中使用的
EXTRACT(EPOCH())
。 演示使用的是postgre DB。您可以按如下方式更改该行,它应该可以工作

date_diff('second', COALESCE(t.complete, t.progress),t.TIME) AS "time(second)"

当表中没有区分视频日志的内容时,如何为
用户a
设置两行?另外,视图的数量与
用户a
不相关。我在presto中运行,但出现了一个错误。将出现错误“无效提取失败:历元”。Presto可能不支持这种语法。date_diff('second',COALESCE(t.complete,t.progress),t.TIME)谢谢!!我做得很好。
| user_id | views_num | time(second) |
| ------- | --------- | ------------ |
| user_a  | 1         | 15           |
| user_a  | 2         | 5            |
| user_b  | 1         | 10           |
date_diff('second', COALESCE(t.complete, t.progress),t.TIME) AS "time(second)"