Я собираюсь предположить, что ваше часовое поле является INT, но независимо от того, что вы должны быть в состоянии адаптировать это ...
GROUP BY
CASE WHEN hour >= 9 THEN date ELSE date - 1 END
По сути, это относится к любому часу до 9 утра как к части предыдущегодень.