Кажется, просто вопрос группировки и некоторых агрегатных функций.
Пример SQL ниже был протестирован в MySql 5.6
Данные тестов установки:
create table TableA_Shoppingsprees (ID INT, HowManyTimesHeHasShopped INT, TotalSpend DECIMAL(15,3));
insert into TableA_Shoppingsprees (ID, HowManyTimesHeHasShopped, TotalSpend) values
(1,12,100.0), (2,10,152.0), (3,5,30.0), (4,12,300.0);
create table TableB_Earnings (ID INT, Income DECIMAL(15,3), TimeMeasured DECIMAL(4,0));
insert into TableB_Earnings (ID, Income, TimeMeasured) values
(1, 20.0, 2011), (2, 20.0, 2011), (3, 22.0, 2011), (4, 20.0, 2011),
(1, 30.0, 2012), (2, 33.0, 2012), (3, 20.0, 2012), (4, 40.0, 2012);
Запрос:
select
HowManyTimesHeHasShopped,
sum(TotalSpend) as TotalSpend,
count(b.ID) as HowManyPeopleFitinCategory,
Income,
TimeMeasured
from TableB_Earnings b
join TableA_Shoppingsprees a on (a.ID = b.ID)
group by TimeMeasured, HowManyTimesHeHasShopped, Income
order by TimeMeasured, min(a.ID);