我有一个包含用户站点访问和访问时间戳的数据集。如何使用ID对用户进行分组并计算SQL中用户访问之间的时间差?抱歉,菜鸟问题我是SQL的新手,试图建立一些报告。
我的数据集示例:
+----------+------------+---------------------+
| userID | visitID | vsitTS |
+----------+------------+---------------------+
| user01 | visit01 | 2019-05-13 01:00:00 |
| user01 | visit02 | 2019-05-13 01:10:00 |
| user02 | visit01 | 2019-05-13 01:05:00 |
| user02 | visit02 | 2019-05-13 01:10:00 |
| user02 | visit03 | 2019-05-13 01:20:00 |
| user02 | visit04 | 2019-05-13 01:30:00 |
+----------+------------+---------------------+
我需要这样的结果:
+----------+------------+---------------+
| userID | visitID | time_dif_sec |
+----------+------------+---------------+
| user01 | visit01 | 0 |
| user01 | visit02 | 10 |
| user02 | visit01 | 0 |
| user02 | visit02 | 5 |
| user02 | visit03 | 10 |
| user02 | visit04 | 10 |
+----------+------------+---------------+
您是否尝试过使用lag()
。它为您提供上一行的值。
select userid, visitid, (visitTS - lag(visitTS) over (partition by
userid order by userid, visitid)) as time_dif_sec from table