Я бы максимально перенёс формирование данных на БД.
Например, можно сначала сформировать список 'активностей':
select distinct `activity_name` from `table` order by `activity`_name desc
а затем для каждой из них выбрать даты:
select `date` from `table` where `activity_name`=? order by `date` desc
Но это конечно не всегда разумно и я не знаю вашу ситуацию.