Проверьте предыдущую запись BigQuery

# #sql #google-bigquery

Вопрос:

Как проверить предыдущую запись в BigQuery?

У меня есть эта таблица, содержащая список всех продуктов, которые купил клиент, заказанных по дате.

пример базы данных

Мне нужно создать дополнительный столбец, который будет возвращать «1», когда предыдущая запись была продуктом «B».

Ответ №1:

  • Используйте LAG() , чтобы переместить предыдущую строку в следующую, в этом случае мы делаем это, чтобы получить предыдущий продукт
  • если предыдущий продукт такой же, как и текущий, то мы создаем столбец с именем falg a и помещаем в него 1
 with previous_product as (
select *,lag(product) over(partition by person_id order by date) as previous_product
from [table name]
)
select
case when product = previous_product then 1 else 0 end as flag
from previous_product
 

Ответ №2:

Вы можете использовать lag() . Я бы оставил флаг как true/false и использовал:

 select t.*,
       ('B' = lag(product, 1, 'A') over (partition by person_id order by date)) as flag
from t;