Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Группировка по произвольным диапазонам дат  [new]
Ё-МАЙО
Guest
Такую задачу можно решить?
Есть таблица:
declare @date_from smalldatetime, @date_to smalldatetime;
declare @data table( date smalldatetime, x int )
select @date_from = '20090801'
     , @date_to = '20090802';

WITH days(d) as (
 SELECT @date_from WHERE @date_from <= @date_to
 union all
 SELECT dateadd(hh,1,d) FROM days WHERE d < @date_to
)
INSERT INTO @data( date, x )
	SELECT d, abs(cast(cast(newid() as binary(16))as bigint)/power(10,9)/power(10,6))
	FROM days
	ORDER BY d
OPTION (maxrecursion 0);

select * from @data;

Необходимо получить выборку, в которой вычисляется максимум поля X и сумма значений на отрезках времени, например каждые два часа
Что-то типа (:
select sum(x) [sum], max(x) [max] , @date_from [from], dateadd(hh, 2, @date_from) [to]
from @data
where date >= @date_from
  and date <  dateadd(hh, 2, @date_from)
union all
select sum(x), max(x), dateadd(hh, 2, @date_from), dateadd(hh, 4, @date_from)
from @data
where date >=  dateadd(hh, 2, @date_from)
  and date <  dateadd(hh, 4, @date_from)
union all
select sum(x), max(x), dateadd(hh, 4, @date_from), dateadd(hh, 6, @date_from)
from @data
where date >=  dateadd(hh, 4, @date_from)
  and date <  dateadd(hh, 6, @date_from)
                   [...]
запросы только для иллюстрации требуемого результата
20 авг 09, 18:36    [7563752]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по произвольным диапазонам дат  [new]
iljy
Member

Откуда:
Сообщений: 8711
Ё-МАЙО,
для иллюстрации можно например так
with Intervals as
(
	select number, dateadd(hh, number  * 2, @date_from) s,
		   dateadd(hh, (number + 1) * 2, @date_from) e
	from master..spt_values
	where type = 'P' and number < (datediff(hh, @date_from, @date_to) / 2)
)
select sum(x), max(x), max(s), max(e) from 
Intervals i join @data d on d.date >= i.s and d.date < i.e
group by i.number
20 авг 09, 18:51    [7563822]     Ответить | Цитировать Сообщить модератору
 Re: Группировка по произвольным диапазонам дат  [new]
Ё-МАЙО
Guest
Спасибо, iljy, неплохая иллюстрация получилась
20 авг 09, 18:57    [7563842]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить