sql - 如果同一剪辑存在相同的日期,则提出能够添加时间间隔的逻辑#
问题描述
如果它具有相同的日期,我正在尝试分离出一个剪辑。例如,由于“剪辑编号”1 和 2 具有相同的日期,所以我试图通过添加 6 小时间隔来使日期不同。我想添加一个类似于“新日期”列的新字段
日期 | Clip_Number | 新日期 |
---|---|---|
2021 年 1 月 2 日 | 1 | 2021 年 1 月 2 日 0:00 |
2021 年 1 月 2 日 | 1 | 2021 年 1 月 2 日 0:00 |
2021 年 1 月 2 日 | 2 | 2021 年 1 月 2 日 6:00 |
2021 年 1 月 2 日 | 2 | 2021 年 1 月 2 日 6:00 |
2021 年 1 月 3 日 | 3 | 2021 年 1 月 3 日 0:00 |
2021 年 1 月 3 日 | 3 | 2021 年 1 月 3 日 0:00 |
解决方案
戈登解决方案有效,但前提是“只有两个值具有相同的日期”。
即使在这种情况下,此解决方案也有效:
with data as (
select 1 clip, '2020-10-03' d
union all select 1, '2020-10-03'
union all select 1, '2020-10-03'
union all select 2, '2020-10-03'
union all select 2, '2020-10-03'
union all select 3, '2020-10-03'
union all select 3, '2020-10-04'
union all select 3, '2020-10-04'
)
select *
, timestampadd('hour'
, 6*(-1+dense_rank() over(partition by d order by clip))
, d
) new_date
from data
推荐阅读
- angular - Angular:如何在响应中获取内部对象数据?
- google-cloud-platform - 谷歌云功能部署错误与terraform
- r - 更改 geom_raster() 中列的顺序
- node.js - npm 没有正确启动,找不到模块'worker_threads
- google-cloud-dataflow - 新 Cloud Pub/Sub 订阅中的未确认消息
- reactjs - 在反应中将卡片的内容从一页传递到另一页
- javascript - JavaScript/Express Promise.all() 问题
- here-api - 逐向导航中的测量单位
- flutter - 如何为大型项目编写 injection_container(服务注入器)
- python - tesseract-ocr个位数识别如何提高?