Как получить разницу между (несколькими) двумя разными строками? - PullRequest
0 голосов
/ 21 мая 2019

У меня есть набор данных, содержащий несколько полей: month, customer_id, row_num (RANK) и verified_date.

Поле ранга указывает первую (1) и вторую (2) покупку каждого клиента. Я хотел бы знать разницу во времени между первой и второй покупкой для каждого покупателя и показать только its first month = месяц, где row_num = 1.

https://i.ibb.co/PjJk5Y0/Capture.png

Итак, мой ожидаемый результат подобен изображению ниже:

https://i.ibb.co/y5Mww7k/Capture-2.png

Я использую StandardSQL в Google Bigquery.

row_num, verified_date
  from table
  GROUP BY 1, 2```

1 Ответ

1 голос
/ 21 мая 2019

Мы можем попытаться использовать сводный запрос здесь, агрегируя по customer_id:

SELECT
    MAX(CASE WHEN row_num = 1 THEN month END) AS month,
    customer_id,
    1 AS row_num,
    DATE_DIFF(MAX(CASE WHEN row_num = 2 THEN verified_date END),
              MAX(CASE WHEN row_num = 1 THEN verified_date END), DAY) AS difference
FROM yourTable
GROUP BY
    customer_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...