【问题标题】:Get the Latest Record Before Given Time with OVER PARTITION BigQuery使用 OVER PARTITION BigQuery 在给定时间之前获取最新记录
【发布时间】:2021-03-16 03:41:21
【问题描述】:

我有存储设备位置记录的 BigQuery 表,如下所示:

我想在给定时间之前获取最新记录并将表格设为: 其中第一条和第二条记录合并在同一行中。

我通常使用 PostgreSQL,并且会使用 LEFT JOIN LATERAL 来执行此操作,但 LATERAL JOIN 在 BigQuery 中不可用,而且我很难在标准 SQL 中执行此操作。我认为这可以通过 OVER PARTITION 解决,但我不确定

有人知道怎么解决吗?谢谢!

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    也许LAG 可以帮忙:

    WITH finishers AS (
      SELECT '1' as name, TIMESTAMP '2016-10-18 2:51:45' as finish_time
      UNION ALL SELECT '2', TIMESTAMP '2016-10-18 2:54:11'
      UNION ALL SELECT '3', TIMESTAMP '2016-10-18 2:59:01'
      UNION ALL SELECT '4', TIMESTAMP '2016-10-18 3:01:17'
    )
    SELECT 
      name,
      finish_time,
      LAG(name) OVER (ORDER BY finish_time) AS previous_name,
      LAG(finish_time) OVER (ORDER BY finish_time) AS previous_time,
    FROM finishers;
    

    您也可以通过 idalat 进行分区

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 2020-10-07
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多