amazon-web-services - 我希望以第一行服务日期的方式从两行或多行获取日期差异 - 第二行服务开始日期,以便我可以获得差异
问题描述
我的数据看起来像这样
用户身份 | 完成时间 | 服务期从 | 服务期至 |
---|---|---|---|
00002cd9-94eb-4c06-a2c4-75253fd541b9 | 2020-11-25T14:20:04.293Z | 2020-11-25T14:20:04.200Z | 2021-02-25T14:20:04.200Z |
00002cd9-94eb-4c06-a2c4-75253fd541b9 | 2021-03-21T10:27:34.842Z | 2021-03-21T10:27:34.800Z | 2022-03-21T10:27:34.800Z |
00002cd9-94eb-4c06-a2c4-75253fd541b9 | 2020-07-24T11:22:12.410Z | 2020-07-24T11:22:12.300Z | 2020-10-24T11:22:12.300Z |
serviceperiodto
我需要与第一行日期的日期差异- 第二行serviceperiodfrom
的日期,它会进行尽可能多的迭代,因为它为每个用户 ID 提供了这些详细信息
请帮助我我尝试使用子查询加入表尝试创建数据透视表但它们似乎都不适合我请帮助
解决方案
您可以使用lag
/lead
访问上一个/下一个项目:
WITH dataset
AS (SELECT *
FROM
(
VALUES
(1, from_iso8601_timestamp('2020-11-25T14:20:04.200Z'), from_iso8601_timestamp('2021-02-25T14:20:04.200Z')),
(1, from_iso8601_timestamp('2021-03-21T10:27:34.800Z'), from_iso8601_timestamp('2022-03-21T10:27:34.800Z')),
(1, from_iso8601_timestamp('2020-07-24T11:22:12.300Z'), from_iso8601_timestamp('2020-10-24T11:22:12.300Z'))
) AS t (userid, serviceperiodfrom, serviceperiodto)
)
SELECT date_diff(
'hour',
serviceperiodto,
lead(serviceperiodfrom, 1) OVER (PARTITION BY userid ORDER BY serviceperiodfrom))
FROM dataset
输出:
_col0 |
---|
770 |
572 |
推荐阅读
- reactjs - 从纪元重新绘制月份 XAxis 计算
- python - 定期创建插槽
- python - 如何通过单击图形中的点在 python/streamlit 中执行功能
- python - 读取 Numpy 数组的一部分
- c# - 动态代理子对象 = null 不起作用
- python - 如何通过后向关系访问 Django 模型字段?
- sqlite - 在 sqlite 中查找两个时间戳之间的差异以获取下载时间
- r - 使用 R 官员包在 docx 中保留段落编号
- makefile - 通过文件中的顺序覆盖 Makefile 中的目标是否合法?
- android - 意式浓缩咖啡(hasComponent(...))在简单示例中不起作用