I would think you just need to break you date down into date parts and use that in you grouping.
So lets say you have a record set with the type of item being sold, the date of sale and amount.
to get daily average
select type, Ave(amount)
from sales
group by type,DATEPART( dd, SaleDate )
To get week average
select type, Ave(amount)
from sales
group by type,DATEPART( WK, SaleDate )
To get Month average
select type, Ave(amount)
from sales
group by type,DATEPART( mm, SaleDate )
I realize this is not a complete solution based on your request but it will hopefully point you in the right direction.
Dan
If only I could snap my figures and have all the correct indexes apear and the buffer clean and.... Start day dream here.