(2) Последний месяц можно силой вывести.
Сделать две группировки, в одной отбор будет все, кроме одной, во второй - равно этой одной.
Количество группировок - номер строки посмотри.
Я если честно, немного растерянности, это же вроде бы обычная задача ? Как обычно такие вещи решают ?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший