Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как узнать тенденцию температуры наружного воздуха  [new]
serega063
Member

Откуда:
Сообщений: 185
Здравствуйте!
есть таблица с фактической температурой
DECLARE @tbl TABLE (dt DATETIME, value FLOAT)

INSERT INTO @tbl ([dt],[value])
SELECT dateadd(MI,-50,GETDATE()), -3.7 union all
SELECT dateadd(MI,-47,GETDATE()), -3.5 union all
SELECT dateadd(MI,-43,GETDATE()), -3.2 union all
SELECT dateadd(MI,-21,GETDATE()), -3.3 union all
SELECT dateadd(MI,-14,GETDATE()), -3.9 union all
SELECT dateadd(MI,-10,GETDATE()), -3.0 union all
SELECT dateadd(MI,-08,GETDATE()), -3.2 union all
SELECT dateadd(MI,-1,GETDATE()), -3.5 

select * from @tbl


Получаю фактическую температуру, другими словами последнее значение
DECLARE @now DATETIME = CONVERT (date, GETDATE())
DECLARE @endDay DATETIME = dateadd(MI,1440,@now)
SELECT TOP(1) p.[dt], isnull(p.[value],0)as temperature  FROM @tbl p WHERE p.dt BETWEEN @now AND @endDay  order by p.dt desc



Требуется вывести столбец с тенденцией, другими словами растет температура или падает

Вопрос. Как собственно это реализовать грамотно

Заранее благодарен!
2 фев 15, 12:55    [17206007]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать тенденцию температуры наружного воздуха  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
serega063,

какая версия сервера?
2 фев 15, 13:01    [17206055]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать тенденцию температуры наружного воздуха  [new]
serega063
Member

Откуда:
Сообщений: 185
2014
2 фев 15, 13:03    [17206080]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать тенденцию температуры наружного воздуха  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
serega063
2014
LAG
2 фев 15, 13:09    [17206133]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать тенденцию температуры наружного воздуха  [new]
serega063
Member

Откуда:
Сообщений: 185
iap
serega063
2014
LAG

Получение предпоследней записи, это же не факт что курс идет на снижение или повышение
2 фев 15, 14:15    [17206684]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать тенденцию температуры наружного воздуха  [new]
msLex
Member

Откуда:
Сообщений: 9294
serega063
Получение предпоследней записи, это же не факт что курс идет на снижение или повышение


Оо, уже курс, а была температура.

по сабжу - линейная регрессия, скользящее среднее и много других умных слов
2 фев 15, 14:29    [17206807]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать тенденцию температуры наружного воздуха  [new]
serega063
Member

Откуда:
Сообщений: 185
msLex
serega063
Получение предпоследней записи, это же не факт что курс идет на снижение или повышение


Оо, уже курс, а была температура.

по сабжу - линейная регрессия, скользящее среднее и много других умных слов


Ну курс имеется ввиду направление, снижается ли температура в целом или поднимается

а можно примерчик?
2 фев 15, 14:36    [17206848]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать тенденцию температуры наружного воздуха  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
serega063
msLex
пропущено...


Оо, уже курс, а была температура.

по сабжу - линейная регрессия, скользящее среднее и много других умных слов


Ну курс имеется ввиду направление, снижается ли температура в целом или поднимается

а можно примерчик?
Если сравнить текущее значение с предыдущим, то нельзя сказать,
возросла температура или нет?
А если ещё следующую запись (LEAD) добавить?
В общем, а если просто подумать?
2 фев 15, 14:54    [17206992]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать тенденцию температуры наружного воздуха  [new]
serega063
Member

Откуда:
Сообщений: 185
iap
А если ещё следующую запись (LEAD) добавить?

следующей нету, на текущий момент.

iap

Если сравнить текущее значение с предыдущим, то нельзя сказать,
возросла температура или нет?

ну можно наверное, но если температура поднималась
SELECT dateadd(MI,-50,GETDATE()), -3.7 union all
SELECT dateadd(MI,-47,GETDATE()), -3.5 union all
SELECT dateadd(MI,-43,GETDATE()), -3.2 union all
SELECT dateadd(MI,-21,GETDATE()), -3.1 union all
SELECT dateadd(MI,-14,GETDATE()), -3.0 union all
SELECT dateadd(MI,-10,GETDATE()), -1.9 union all  /*а тут солнышко пригрело датчик температуры он и выдал*/
SELECT GETDATE(), -2.5 /*текущее значение*/


а при использовании LAG получается что температура падает
2 фев 15, 15:04    [17207046]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать тенденцию температуры наружного воздуха  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
serega063,

в жизни-то, без SQL, как всё это считается?
Или Вы сами с нуля придумываете?
2 фев 15, 15:08    [17207066]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать тенденцию температуры наружного воздуха  [new]
Glory
Member

Откуда:
Сообщений: 104751
serega063
а можно примерчик?

линейная регрессия и скользящее среднее - это математические термины
Алгоритмы их рассчета есть в Гугле.
Когда выберите алгоритм, то с вопросами о его реализаци в TSQL можете вернуться в форум.
2 фев 15, 15:10    [17207077]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить