Если я понимаю, вы хотите сгруппировать по разным временам активности и посмотреть средние дни между началом и концом каждого действия. Это должно сделать это для вас.
SELECT activity_id, avg(DATEDIFF(end_time, start_time)) AS Average
FROM tablename
GROUP BY activity_id, DAYOFWEEK(start_time)
Редактировать: Неправильно понято, вы также хотите, чтобы оно было разбито по дням, так что это должно охватить каждую группу, разбито по дням недели, на которые начинается start_time, а затем по средним дням между start_time и end_time.