Вы можете группировать по-почти все, что вы хотите.Если вы можете получить что-то в столбце, чтобы показать, что вы хотите, вы можете сгруппировать по нему.Таким образом, всего за два периода вы можете просто сгруппировать по if:
SELECT * FROM table
GROUP BY if(stamp between "2005-07-01" and "2006-02-01", 0, 1)
Если вам нужно, чтобы периоды варьировались в течение более длительного времени (нескольких лет), вы можете использовать period_diff, чтобы различать:
SELECT * FROM table
GROUP BY floor(period_diff( DATE_FORMAT(stamp, "%Y%m"), "200507") / 6)
Это даст вам количество 6-месячных блоков, прошедших между вашей датой и начальным периодом в формате год-месяц.