[英]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.