2021-10-14

我有一张下表(view)

±------±------------±------------+
| Data | Date | Time |
±------±------------±------------+
| Data1 | 2020-08-19 | 13:00:00 |
| Data1 | 2020-08-19 | 13:30:00 |
| Data1 | 2020-08-19 | 14:00:00 |
| Data1 | 2020-08-21 | 07:00:00 |
| Data1 | 2020-08-21 | 07:30:00 |
| Data2 | 2020-08-20 | 08:00:00 |
| Data2 | 2020-08-20 | 08:30:00 |
±------±------------±------------+
我试图找出一种创建SQL语句的方法,该方法将执行以下操作:合并具有连续日期和时间(30分钟间隔)的数据

结果应为:

±------±------------±------------+
| Data | Date | Time |
±------±------------±------------+
| Data1 | 2020-08-19 | 13:00:00 |
| Data1 | 2020-08-21 | 07:00:00 |
| Data2 | 2020-08-20 | 08:00:00 |
±------±------------±------------+
分析解答
具有LAG()窗口功能:

select Data, Date, Time
from (
select *,
concat(Date, ’ ', Time) - interval 30 minute <=
lag(concat(Date, ’ ', Time)) over (partition by Data order by Date, Time) flag
from tablename
) t
where coalesce(flag, 0) = 0
order by Data, Date, Time
请参阅demo。
结果:

DataDateTime
Data12020-08-1913:00:00
Data12020-08-2107:00:00
Data22020-08-2008:00:00
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值