我有一张下表(视图)
+-------+-------------+-------------+
| 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分钟)的数据
从基本的SQL到早期的中级SQL能力,我都无法正确使用GROUP BY。期待答案或方向。再次非常感谢
结果应为:
+-------+-------------+-------------+
| 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
参见演示。
结果:
> Data | Date | Time
> :---- | :--------- | :-------
> Data1 | 2020-08-19 | 13:00:00
> Data1 | 2020-08-21 | 07:00:00
> Data2 | 2020-08-20 | 08:00:00
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句