【发布时间】:2020-07-08 15:55:35
【问题描述】:
手头有这张桌子:
SELECT * FROM mutable LIMIT 10;
user_id | session_id | timestamp
---------+--------------------+------------------------
180 | 179020080820120904 | 2008-08-20 12:09:04+01
180 | 179020080820120904 | 2008-08-20 12:09:07+01
180 | 179020080820120904 | 2008-08-20 12:10:35+01
180 | 179020080820120904 | 2008-08-20 12:10:37+01
180 | 179020080820120904 | 2008-08-20 12:10:39+01
180 | 179020080820120904 | 2008-08-20 12:10:41+01
180 | 179020080820120904 | 2008-08-20 12:10:43+01
180 | 179020080820120904 | 2008-08-20 12:10:45+01
180 | 179020080820120904 | 2008-08-20 12:10:47+01
180 | 179020080820120904 | 2008-08-20 12:10:49+01
(10 rows)
所以我想通过添加一列 t_evolution 来修改表,该列显示跟踪从一个记录出现到下一个记录的持续时间,考虑到 timestamp 列,如下所示:
+---------------------------------------------------------+--------------------+
| user_id | session_id | timestamp | t_evolution |
+---------------------------------------------------------+--------------------+
| 180 | 179020080820120904 | 2008-08-20 12:09:04+01 | 0 |
| 180 | 179020080820120904 | 2008-08-20 12:09:07+01 | 3 |
| 180 | 179020080820120904 | 2008-08-20 12:10:35+01 | 92 |
| 180 | 179020080820120904 | 2008-08-20 12:10:37+01 | 94 |
| 180 | 179020080820120904 | 2008-08-20 12:10:39+01 | 96 |
| 180 | 179020080820120904 | 2008-08-20 12:10:41+01 | 98 |
| 180 | 179020080820120904 | 2008-08-20 12:10:43+01 | 100 |
| 180 | 179020080820120904 | 2008-08-20 12:10:45+01 | 102 |
| 180 | 179020080820120904 | 2008-08-20 12:10:47+01 | 104 |
| 180 | 179020080820120904 | 2008-08-20 12:10:49+01 | 106 |
+---------------------------------------------------------+--------------------+
(10 rows)
【问题讨论】:
-
在您预期结果的 3d 行中,t_evolution 应该是 91,其余的都减去 1。
标签: sql postgresql aggregate-functions