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)"