mySQL запрос, который немного сложнее - PullRequest
0 голосов
/ 24 апреля 2020

Привет! Я хочу создать этот запрос в mySQL.

Заявление: для всех клиентов, совершивших транзакции в течение 2017 года, какой% совершил еще одну транзакцию в течение 30 дней?

Можете ли вы подскажите, как может быть разработан такой запрос?

Это изображение таблицы для выполнения этого запроса:

Имя таблицы: транзакции

table_transactions

1 Ответ

0 голосов
/ 24 апреля 2020

Просто используйте lead(), чтобы получить следующую дату. Затем выполните агрегирование на уровне клиента, чтобы определить, есть ли у какой-либо транзакции в течение периода времени еще одна в течение 30 дней для этого клиента.

Наконец, снова агрегируйте:

select avg(case when mindiff < 30 then 1.0 else 0 end) as within_30days
from (select customerid, min(datediff(next_date - date)) as mindiff
      from (select t.*, lead(date) over (partition by customerid order by date) as next_date
            from transactions t
           ) t
     where date >= '2017-01-01' and date < '2018-01-01'
     group by customerid
    ) c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...