pod MS SQL, ale na oraclu idea ta sama, tylko funkcja do wyciagania czesci daty inna
oczywiscie to sumuje tylko wartosci ktore sa, tzn. jesli nie ma nic dla daty 2010-9-2, to suma po dniach dla drugiego nie jest mozliwa (tzn. nie bedzie rekordu)
musialbys najpierw dopisac selectowanie odpowiedniej liczby wartosci, czyli np. obliczenie ile jest dni w mies., czy tyg., czy godzin
declare @t table (data datetime, ilosc int)
insert into @t values ('2010-8-30 16:00', 4)
insert into @t values ('2010-9-01 12:30', 1) -- sroda
insert into @t values ('2010-9-04 19:00', 4)
insert into @t values ('2010-9-06 12:30', 2) -- pon
insert into @t values ('2010-9-13 12:30', 1)
insert into @t values ('2010-9-17 12:30', 2)
insert into @t values ('2010-9-21 12:30', 3)
insert into @t values ('2010-9-22 12:30', 1)
insert into @t values ('2010-9-25 12:30', 2)
insert into @t values ('2010-9-29 12:30', 1)
insert into @t values ('2010-9-30 12:30', 3) -- czw
insert into @t values ('2010-10-1 11:00', 5)
declare @start datetime, @koniec datetime, @typ int
set @start = '2010-9-01 12:00'
set @koniec = '2010-9-30 18:00'
set @typ = 4 -- 1 - miesiac, 2 - tydzien, 3 - dzien, 4 - godzina
select gr, sum(ilosc) as total
from
(
select data, ilosc,
case @typ
when 1 then DATEPART(month, data)
when 2 then DATEPART(week, data)
when 3 then DATEPART(day, data)
when 4 then CONVERT(char(8),data,112) + CONVERT(char(2), data, 108)
end as gr
from @t
where @start <= data and data <= @koniec
) as T
group by gr