Предполагая, что вы просто хотите сравнить посещения магазина в первой половине диапазона дат со второй половиной, вот пример, который охватывает последние 40 дней, используя 2 подзапроса, чтобы получить количество для каждого диапазона.
select
((endVisits + startVisits)/40) average,
(endVisits > startVisits) increasing,
((endVisits - startVisits)/(startVisits) * 100) percentChange
from
(select sum(visit_count) startVisits
from store_visit
where
visit_date > current_date - 40
and visit_date <= current_date - 20) startRange,
(select sum(visit_count) endVisits
from store_visit
where
visit_date > current_date - 20) endRange;
Примечания
Я не знаю, где, как вы хотите рассчитать сумму увеличения 1-4, поэтому я просто сделал процент и выможет изменить это к любой логике, которую вы хотите.Кроме того, вам нужно будет обновить диапазоны дат в подзапросах по мере необходимости.
Редактировать: Просто обновил среднее значение ((endVisits + startVisits) / 40) вместо ((endVisits + startVisits) / 2).Вы также можете использовать функцию avg в своих подзапросах и разделить их сумму на 2, чтобы получить среднее значение за весь период.