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

Откуда:
Сообщений: 125
Приветствую форумчане, прошу помощи в формировании запроса на выборку актуальных показаний датчиков температуры выше нормы.

Показания датчиков пишутся в таблицу

Показание ДатчикID Дата
28.522014-08-01
25.012014-08-01
33.132014-08-01
26.312014-08-02
27.722014-08-02
32.012014-08-03
29.822014-08-03

Надо выбрать те датчики, по которым есть последние показания и они превышают значение 30.0 т.е.

Показание ДатчикID Дата
33.132014-08-01
32.012014-08-03
4 авг 14, 23:16    [16398973]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с поиском критической температуры  [new]
gandjustas
Member

Откуда:
Сообщений: 857
Блог
@le)(,

SELECT t.Показание, t.ДатчикID, t.Дата
FROM (SELECT *, RANK () OVER (PARTITION BY ДатчикID ORDER BY Дата DESC) as rank FROM t) t
WHERE t.rank = 1 and t.Показание > 30


Нужен будет индекс\ключ (ДатчикID, Дата DESC)
4 авг 14, 23:40    [16399047]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с поиском критической температуры  [new]
@le)(
Member

Откуда:
Сообщений: 125
Благодарю!!!

Еще не понимаю как, но работает .
5 авг 14, 11:43    [16400192]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с поиском критической температуры  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8804
select t1.* 
from t1
inner join (select ДатчикID, max(Дата) Дата from t1 group by ДатчикID) tbl1 
        on tbl1.ДатчикID = t1.ДатчикID and tbl1.Дата=t1.Дата
where Показание > 30.0
5 авг 14, 13:07    [16400837]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить