我想计算相同date_id
、subs_no
、year
、month
和day
的组内的持续时间。如果是第一个条目,它应该只显示“第一”。
这是我的数据集:
+--------+---------------+--------+----+-----+---+
| date_id| ts| subs_no|year|month|day|
+--------+---------------+--------+----+-----+---+
|20200801|14:27:18.000000|10007239|2022| 6| 1|
|20200801|14:29:44.000000|10054647|2022| 6| 1|
|20200801|08:24:21.000000|10057750|2022| 6| 1|
|20200801|13:49:27.000000|10019958|2022| 6| 1|
|20200801|20:07:32.000000|10019958|2022| 6| 1|
+--------+---------------+--------+----+-----+---+
注意:列“ts”是字符串类型。
以下是我的预期输出:
+--------+---------------+--------+----+-----+---+---------+
| date_id| ts| subs_no|year|month|day| duration|
+--------+---------------+--------+----+-----+---+---------+
|20200801|14:27:18.000000|10007239|2022| 6| 1| first |
|20200801|14:29:44.000000|10054647|2022| 6| 1| first |
|20200801|08:24:21.000000|10057750|2022| 6| 1| first |
|20200801|13:49:27.000000|10019958|2022| 6| 1| first |
|20200801|20:07:32.000000|10019958|2022| 6| 1| 6:18:05 |
+--------+---------------+--------+----+-----+---+---------+
2条答案
按热度按时间j2datikz1#
您可以尝试将一些列连接成一个表示实际时间戳的列。然后,使用
min
作为窗口函数进行计算。最后,将duration“00:00:00”替换为“first”。输入:
脚本:
jjjwad0x2#
使用窗口函数。代码和逻辑如下