按SQL中组中的行计算时间差

问题描述 投票:0回答:1

我有一个包含用户站点访问和访问时间戳的数据集。如何使用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            |
+----------+------------+---------------+
mysql sql google-bigquery timedelta
1个回答
0
投票

您是否尝试过使用lag()。它为您提供上一行的值。

  select userid, visitid, (visitTS - lag(visitTS) over (partition by 
  userid order by userid, visitid)) as time_dif_sec from table
© www.soinside.com 2019 - 2024. All rights reserved.