У меня следующая структура таблицы:
email | date | YEAR
antrim@8qwh37kibb6ut7.ml | 2018-10-25 | 2018
asam@bpvi.ml | 2018-02-15 | 2018
client5@test.com | 2018-04-14 | 2018
antrim@8qwh37kibb6ut7.ml | 2017-07-19 | 2017
client4@test.com | 2017-09-30 | 2017
asam@bpvi.ml | 2017-01-25 | 2017
antrim@8qwh37kibb6ut7.ml | 2017-10-25 | 2017
asam@bpvi.ml | 2016-10-25 | 2016
antrim@8qwh37kibb6ut7.ml | 2016-05-17 | 2016
Сначала мне нужны клиенты, которые купили только за три года, те, которые повторялись.Так что для этого я сам присоединился три раза, хотя я подозреваю, что это не самый эффективный
SELECT COUNT(DISTINCT first_year.email) as repetidos
FROM `table` AS first_year
JOIN `table` AS second_year
ON first_year.email = second_year.email
JOIN `table` AS third_year
ON first_year.email = third_year.email
AND first_year.year = 2016
WHERE second_year.year = 2017
AND third_year.year = 2018
И это дает мне электронные письма людей, которые купили за три года.Примерно так:
email
antrim@8qwh37kibb6ut7.ml
asam@bpvi.ml
Мне нужно знать частоту в днях, то есть, если вы купили 5 раз в магазине, мне нужно знать частоту ваших покупок, если вы покупаете каждые 40 дней, каждые 20дней и так, я нашел это
SELECT DATE_DIFF(DATE '2018-02-20', DATE '2018-01-15', DAY) as days_diff;
Но что я не знаю, как сделать, это использовать эту формулу с моим предыдущим запросом.Это возможно?Большое спасибо!