Vous pouvez grouper sur -presque- tout ce que vous voulez. Si vous pouvez obtenir quelque chose dans une colonne pour montrer ce que vous voulez, vous pouvez le regrouper. Ainsi, pour seulement deux périodes, vous pouvez simplement vous regrouper sur un if :
SELECT * FROM table
GROUP BY if(stamp between "2005-07-01" and "2006-02-01", 0, 1)
Si vous avez besoin que les périodes s'étendent sur des périodes plus longues (plusieurs années), vous pouvez utiliser period_diff pour distinguer :
SELECT * FROM table
GROUP BY floor(period_diff( DATE_FORMAT(stamp, "%Y%m"), "200507") / 6)
Il vous donnera le nombre de blocs de 6 mois écoulés entre votre date et la période de début au format année-mois.