# #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;