LAG函数和NULLS

问题描述 投票:0回答:2

因此,我正在尝试使用LAG函数(Google BigQuery),而我的第一个值是NULL。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9tNm9oOC5qcGcifQ==” alt =“在此处输入图像描述”>

我正在使用滞后函数来获取lag_Value_1,lag_Value_2 ...在这里:

SELECT ITEM,row_A,row_B,date,Value_1,Value_2,Value_3,Value_4,Value_5,
         LAG(Value_1,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_1,
         LAG(Value_2,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_2,
         LAG(Value_3,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_3,
         LAG(Value_4,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_4,
         LAG(Value_5,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_5
FROM table

为ITEM 2填写lag_Value_1,2,3,4,5 ....的任何帮助吗?

sql null google-bigquery lag
2个回答
0
投票

您是否想要三个参数形式的滞后?

SELECT ITEM, row_A, row_B, date, Value_1, Value_2, Value_3, Value_4, Value_5,
       LAG(Value_1, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_1,
       LAG(Value_2, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_2,
       LAG(Value_3, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_3,
       LAG(Value_4, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_4,
       LAG(Value_5, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_5
FROM table

这三个参数是:

  • 滞后值。
  • 要返回的行数。
  • 默认值。

0
投票

我觉得以下是您要寻找的内容:

  LAST_VALUE(Value_1 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_1,
  LAST_VALUE(Value_2 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_2,
  LAST_VALUE(Value_3 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_3,
  LAST_VALUE(Value_4 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_4,
  LAST_VALUE(Value_5 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_5
© www.soinside.com 2019 - 2024. All rights reserved.