创建跟踪对象进度的SQL脚本

问题描述

我有一个具有以下架构的表:

Fruit   Truck ID  Bucket ID        Date         
------   -----    ---------     ----------
Apple      1         101        2018/04/01
Apple      1         101        2018/04/10
Apple      1         112        2018/04/16
Apple      2         782        2018/08/18
Apple      2         782        2018/09/12
Apple      1         113        2019/09/12
Apple      1         113        2019/09/21

我的目标是编写一个sql脚本,该脚本返回每种水果的每个卡车和铲斗对的开始和结束日期。预期结果如下:

Fruit   Truck ID  Bucket ID     Start Date     End Date     
------   -----    ---------     ----------    ----------
Apple      1         101        2018/04/01    2018/04/16
Apple      1         112        2018/04/16    2018/08/18
Apple      2         782        2018/08/18    2018/09/12
Apple      1         113        2019/09/12    2019/09/21

我尝试通过滞后/超前窗函数解决此问题,但是日期不正确。还有使用窗口函数解决此问题的另一种方法,还是我必须为此创建子查询

解决方法

我认为您需要聚合和窗口功能:

select fruit,truck_id,bucket_id,min(date) start_date,lead(min(date),1,max(date)) over(partition by fuit order by min(date)) end_date
from mytable
group by fruit,bucket_id

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...