Как получить дату из ближайшей старой записи для данного клиента, если появляется новая - PullRequest
1 голос
/ 30 октября 2019

Я имею дело с таблицей записей политики в Google BigQuery. В моей таблице три столбца: INDVDL_ID, POLICY_ID и CNV_DT. Каждый уникальный клиент идентифицируется с помощью INDVDL_ID и может иметь одну или несколько записей в таблице в зависимости от того, сколько политик он имеет. У каждой политики есть свой идентификатор (POLICY_ID) и дата, когда она была куплена (CNV_DT). Поэтому код для извлечения данных, которые я использую, выглядит следующим образом:

SELECT INDVDL_ID, POLICY_ID, CNV_DT
FROM `Policy_table.TP_Policies.policy_20191023

Что у меня есть:

<table><tbody><tr><th>INDVDL_ID</th><th>POLICY_ID</th><th>CNV_DT</th></tr><tr><td>1</td><td>1</td><td>2008-01-01</td></tr><tr><td>1</td><td>2</td><td>2008-04-31</td></tr><tr><td>1</td><td>3</td><td>2008-12-23</td></tr><tr><td>3</td><td>4</td><td>2009-08-19</td></tr><tr><td>2</td><td>5</td><td>2010-06-12</td></tr><tr><td>2</td><td>6</td><td>2011-11-12</td></tr></tbody></table>

Я хотел бы получить таблицу, где для каждой дополнительной политики, которую купил клиент, у меня может быть CNV_DT его предыдущей покупки.

Что бы я хотел иметь:

<table><tbody><tr><th>INDVDL_ID</th><th>POLICY_ID</th><th>CNV_DT</th><th>PRIOR_CNV_DT</th></tr><tr><td>1</td><td>1</td><td>2008-01-01</td><td> </td></tr><tr><td>1</td><td>2</td><td>2008-04-31</td><td>2008-01-01</td></tr><tr><td>1</td><td>3</td><td>2008-12-23</td><td>2008-04-31</td></tr><tr><td>3</td><td>4</td><td>2009-08-19</td><td> </td></tr><tr><td>2</td><td>5</td><td>2010-06-12</td><td> </td></tr><tr><td>2</td><td>6</td><td>2011-11-12</td><td>2010-06-12</td></tr></tbody></table>

1 Ответ

2 голосов
/ 30 октября 2019

Вы, кажется, хотите lag():

SELECT INDVDL_ID, POLICY_ID, CNV_DT,
       LAG(CNV_DT) OVER (PARTITION BY INDVDL_ID ORDER BY CNV_DT) as PRIOR_CNV_DT
FROM `Policy_table.TP_Policies.policy_20191023;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...