|
Помогите плиз с запросом
|
|||
---|---|---|---|
#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, 09:48 |
|
Помогите плиз с запросом
|
|||
---|---|---|---|
#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:10 |
|
Помогите плиз с запросом
|
|||
---|---|---|---|
#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 Спасибо большое, работает ! (хоть и очень медленно :) ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 14:45 |
|
|
start [/forum/topic.php?fid=53&msg=39518224&tid=1996240]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
others: | 314ms |
total: | 437ms |
0 / 0 |