分区,引导,左连接。不同行数据时间之间的差异

By simon at 2018-02-07 • 0人收藏 • 55人看过

我有关于发动机工作时间的数据。数据包括:   * object ID - 引擎名称   * object ID0 - 日期时间格式。大号ine在引擎停止时被创建。   * Start to - 日期时间格式。 我需要得到有关发动机工作时间的信息国王每天。为了 这样做,我需要采取前:停止的第一个记录(这意味着引擎 开始工作)结束演绎t他从下一站停下来(发动机有 停止工作) 为了做到这一点,我得出了一个结论,我必须使用partiti在领导和 左加入。

select 
object id, 
engine start (stop to) , 
engine stop (alias after joining), 
time_difference (datediff between engine start "stop to" and engine stop "stop from" alias)
我分区后,每一行将有自己的身份证生病需要加入 在哪里Partitioned线路ID“lead”(或者仅仅是“+1”或“>”)到当前 分区线路ID。 这是我设法解决任务,但我新的SQL,我不能 完成任务。任何建议我怎么能做到这一点?enter image de.ion here

2 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

此查询appends对应每个行的stopfrom日期:

SELECT
  testdata.*,
  LEAD(stopfrom, 1, NULL) OVER (PARTITION BY objectid ORDER BY stopto) AS next_stopfrom
FROM testdata
要计算时差:
WITH cte AS (
  SELECT
    testdata.*,
    LEAD(stopfrom, 1, NULL) OVER (PARTITION BY objectid ORDER BY stopto) AS next_stopfrom
  FROM testdata
)
SELECT cte.*, DATEDIFF(minute, stopto, next_stopfrom)
FROM cte

2018-02-07   #2

此查询appends对应每个行的stopfrom日期:

SELECT
  testdata.*,
  LEAD(stopfrom, 1, NULL) OVER (PARTITION BY objectid ORDER BY stopto) AS next_stopfrom
FROM testdata
要计算时差:
WITH cte AS (
  SELECT
    testdata.*,
    LEAD(stopfrom, 1, NULL) OVER (PARTITION BY objectid ORDER BY stopto) AS next_stopfrom
  FROM testdata
)
SELECT cte.*, DATEDIFF(minute, stopto, next_stopfrom)
FROM cte

登录后方可回帖

Loading...