Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
08.09.2017, 09:48
|
|||
---|---|---|---|
|
|||
Помогите плиз с запросом |
|||
#18+
Добрый день Есть таблица, в которую пишутся показания сенсоров вместе с датой сбора. Структура таблицы примерно такая: value | date | sensor_id ------------------------------- 1 | 2017-08-23 | 1 5 | 2017-08-24 | 1 7 | 2017-08-25 | 1 10 | 2017-08-26 | 1 8 | 2017-08-27 | 1 ... 100 | 2017-08-23 | 2 120 | 2017-08-24 | 2 110 | 2017-08-25 | 2 180 | 2017-08-26 | 2 200 | 2017-08-27 | 2 Мне нужно получить аггрегированые данные сенсоров по времени: - нужна разница между самым первым и самым последним показателем (для sensor_id=1 это будет "8 - 1 = 7") - среднее значение показателей за все время (для sensor_id=1 это будет "(1 + 5 + 7 + 10 + 8) / 5 = 6.2") Помогите пожалуйста с запросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.09.2017, 14:10
|
|||
---|---|---|---|
|
|||
Помогите плиз с запросом |
|||
#18+
create table xTest( value int ,"date" date ,sensor_id int ); insert into xTest VALUES (1,'2017-08-23',1) ,(5 , '2017-08-24' , 1) ,(7 , '2017-08-25' , 1) ,(10, '2017-08-26' , 1) ,(8 , '2017-08-27' , 1) ,(100 , '2017-08-23' , 2) ,(120 , '2017-08-24' , 2) ,(110 , '2017-08-25' , 2) ,(180 , '2017-08-26' , 2) ,(200 , '2017-08-27' , 2) ; 1) with d as ( select sensor_id ,max(date) as dmax ,min(date) as dmin from xTest group by sensor_id ) select d.sensor_id ,mxV.Value-mnv.Value as d from D D ,xTest mnV ,xTest mxV where D.sensor_id=mnV.sensor_id and D.dmin=mnv.date and D.sensor_id=mxV.sensor_id and D.dmax=mxv.date 2) select sensor_id ,avg(value) as middlev from xTest group by sensor_id ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.09.2017, 14:45
|
|||
---|---|---|---|
|
|||
Помогите плиз с запросом |
|||
#18+
Mr.DKSoftcreate table xTest( value int ,"date" date ,sensor_id int ); insert into xTest VALUES (1,'2017-08-23',1) ,(5 , '2017-08-24' , 1) ,(7 , '2017-08-25' , 1) ,(10, '2017-08-26' , 1) ,(8 , '2017-08-27' , 1) ,(100 , '2017-08-23' , 2) ,(120 , '2017-08-24' , 2) ,(110 , '2017-08-25' , 2) ,(180 , '2017-08-26' , 2) ,(200 , '2017-08-27' , 2) ; 1) with d as ( select sensor_id ,max(date) as dmax ,min(date) as dmin from xTest group by sensor_id ) select d.sensor_id ,mxV.Value-mnv.Value as d from D D ,xTest mnV ,xTest mxV where D.sensor_id=mnV.sensor_id and D.dmin=mnv.date and D.sensor_id=mxV.sensor_id and D.dmax=mxv.date 2) select sensor_id ,avg(value) as middlev from xTest group by sensor_id Спасибо большое, работает ! (хоть и очень медленно :) ) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&tablet=1&tid=1996240]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 294ms |
total: | 447ms |
0 / 0 |