Я создал образец на SqlFiddle
Чтобы помочь сэмплировать вашу Week (), начиная со вторника, я добавил около 11 строк в конце предоставленных вами образцов данных, но дал даты 1 февраля 2020 года - 11 февраля 2020 года.
MySQL, по-видимому, имеет воскресенье по умолчанию в качестве начала недели. Итак, чтобы иметь вторник, я беру любую дату транзакции и сдвигаю ее на 2 дня назад (вторник -1 = понедельник - 1 = воскресенье). Так что теперь функция «НЕДЕЛЯ» будет возвращать неделю года. Вы можете увидеть результаты этого из первого запроса, который различает исходную дату и ее восприятие дня для WEEK (), а затем снова ПОСЛЕ того, что со сдвигом -2, чтобы увидеть изменения недели, основанные на TUESDAY недели.
select
week( SI.Time_Stamp ) DefWeek,
dayName( SI.Time_Stamp ) DefWeekName,
week( date_add( SI.Time_Stamp, interval -2 day )) TuesWeek,
dayName( date_add( SI.Time_Stamp, interval -2 day )) TuesWeekName,
SI.*
from
StackInvoice SI
order by
SI.Time_Stamp;
Теперь, когда вы видите, как применяется этот сдвиг, теперь это простая агрегация.
select
week( date_add( SI.Time_Stamp, interval -2 day )) TuesWeek,
SI.Store_ID,
sum( SI.Sales ) TotalSales,
sum( SI.Units ) TotalUnits,
sum( SI.Sales - SI.Cogs ) TotalProfit
from
StackInvoice SI
group by
week( date_add( SI.Time_Stamp, interval -2 day )),
SI.Store_ID
order by
week( date_add( SI.Time_Stamp, interval -2 day )),
SI.Store_ID