найти количество дней между первыми двумя датами - PullRequest
2 голосов
/ 20 сентября 2019

Таким образом, вопрос кажется довольно сложным. Интересно, могу ли я получить здесь какой-нибудь совет?Я пытаюсь решить эту проблему с SQLite 3. Поэтому у меня есть формат данных этого.

customer | purchase date
1        | date 1
1        | date 2
1        | date 3
2        | date 4
2        | date 5
2        | date 6
2        | date 7

количество раз, которое клиент повторяет, является случайным.

, поэтому я просто хочу узнать,1-я и 2-я дата покупки клиента попадают между определенным периодом времени.повторите для других клиентов.нужно учитывать только 1 и 2 даты.Любая помощь будет оценена!

1 Ответ

1 голос
/ 20 сентября 2019

Мы можем попытаться использовать ROW_NUMBER здесь:

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY customer ORDER BY "purchase date") rn
    FROM yourTable
)

SELECT
    customer,
    CAST(MAX(CASE WHEN rn = 2 THEN julianday("purchase date") END) -
         MAX(CASE WHEN rn = 1 THEN julianday("purchase date") END) AS INTEGER) AS diff_in_days
FROM cte
GROUP BY
    customer;

Идея заключается в том, чтобы агрегировать по клиенту, а затем взять разницу в датах между второй и первой покупкой.ROW_NUMBER используется для поиска этих первых и вторых покупок для каждого клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...