繁体   English   中英

BigQuery,连续行之间的差异相关问题

[英]BigQuery, difference between consecutive rows related question

我很难找出正确的问题,但我有以下查询,我已经能够得到连续行之间的差异。

我的问题是(如我的图片中所示)当icao_address 和flight_number 更改(我想要)时,我希望发生更改的行(icao_address 和flight_number 的更改)重置为零

我的目的是然后按icao_address 和flight_number 对查询进行分组。

WITH
  temptable AS (
  SELECT
  date(timestamp) as flight_date,
    timestamp,
    UNIX_SECONDS(timestamp) AS timestamp_unix,
    icao_address,
    flight_number,
    LAG(UNIX_SECONDS(timestamp)) OVER (ORDER BY timestamp) AS value2
  FROM
    `table`
  WHERE
    (icao_address = '70C0C7' and flight_number = 'WY144') or (icao_address = '750467' and flight_number = 'AK1311') and 
    flight_number is not null and 
    timestamp BETWEEN '2020-01-01'
    AND '2020-01-02'),
  relation2 AS (
  SELECT
  flight_date,
    timestamp,
    timestamp_unix,
    timestamp_unix - value2 AS difference,
    icao_address,
    flight_number
  FROM
    temptable
  ) 
  select * 
  from relation2

在图像中,在第 11 行,在差异列下,考虑到icao_address 和flight_number 的变化,我希望那里有一个零。 这是可能的,或任何其他方式来做到这一点。 我正在尝试实施一个案例,但没有取得任何进展。

在此处输入图片说明

我想你想partition by

LAG(UNIX_SECONDS(timestamp)) OVER (PARTITION BY icao_address, flight_number ORDER BY timestamp) AS value2

如果您确实想要0而不是NULL ,请使用LAG()的三参数形式:

LAG(UNIX_SECONDS(timestamp), 1, 0) OVER (PARTITION BY icao_address, flight_number ORDER BY timestamp) AS value2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM