Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Оконные функции по оси времени / 8 сообщений из 8, страница 1 из 1
10.09.2013, 19:32
    #38392800
korisk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оконные функции по оси времени
Есть таблица триплетов (id датчика, время, показание):
create table triplets (id bigint, time bigint, value float);

Нужно получить средние значения для датчиков 1,2 за время с 10 до 20?

Оконные функции работают только по значениям поля, с функцией не работают, во всяком случае в PostgreSQL.

Корректный запрос, но не отвечающий на поставленный вопрос:
select id, time, value, avg(value) over (partition by time,id) from triplets where id in (1,2);

Примерный закрос который вроде должен работать как надо, но не работает:
select id, time, value, avg(value) over (partition by (time > 10 and time < 20),id) from triplets where id in (1,2);

Вопрос:
Каким стандартным запросом получить средние значения для датчиков 1,2 за время с 10 до 20?
С помощью каких расширений можно решить задачу?

Может я чего-то не знаю, тогда поделитесь плз, ключевыми словами.

Спасибо.
...
Рейтинг: 0 / 0
10.09.2013, 19:43
    #38392807
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оконные функции по оси времени
koriskКаким стандартным запросом получить средние значения для датчиков 1,2 за
время с 10 до 20?
Если бы время хранилось как у нормальный людей в поле типа TIME, то работал бы обычный
запрос без всякой аналитики:
Код: sql
1.
2.
3.
select id, avg(value) from triplets
  where id in (1,2) and "time" between time'10:00' and time'20:00'
  group by id


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.09.2013, 20:05
    #38392824
korisk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оконные функции по оси времени
Хаха! ) Спасибо большое. Что-то я перемудрил.
...
Рейтинг: 0 / 0
10.09.2013, 21:03
    #38392873
korisk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оконные функции по оси времени
Хотя нет. Это я вопрос не правильно сформулировал.

Нужне результат N запросов:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select avg(value2) from (select avg(value) as value2 from triplets
  where id in (1,2) and "time" between time'10:00' and time'14:00'  group by id) as val;

select avg(value2) from (select avg(value) as value2 from triplets
  where id in (1,2) and "time" between time'14:00' and time'18:00'  group by id) as val;

select avg(value2) from (select avg(value) as value2 from triplets
  where id in (1,2) and "time" between time'18:00' and time'22:00'  group by id) as val;
....


в виде:
time|value
10:00| xxx
14:00| yyy
18:00| zzz
...

либо

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select avg(value2) from (select avg(value) as value2 from triplets
  where id in (1,2) and "time" between time'10:00' and time'14:00'  group by id) as val;

select avg(value2) from (select avg(value) as value2 from triplets
  where id in (3,4) and "time" between time'10:00' and time'14:00'  group by id) as val;

select avg(value2) from (select avg(value) as value2 from triplets
  where id in (5,6) and "time" between time'10:00' and time'14:00'  group by id) as val;
....


id|value
1| xxx
3| yyy
5| zzz
...


Спасибо
...
Рейтинг: 0 / 0
10.09.2013, 21:38
    #38392898
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оконные функции по оси времени
koriskХотя нет. Это я вопрос не правильно сформулировал.
Вторая попытка тоже провалилась. Иди ещё подумай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.09.2013, 22:42
    #38392951
lookat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оконные функции по оси времени
korisk,

Данных нет, а потому непонятно:

1. Датчики дают показания через
фиксированный интервал времени?
То есть регулярно? Или нет?

2. Как изменяется из меняемая величина
Между показаниями, непрерывно или скачком?

3. Показания датчиков 1 и 2 синхронизированы по времени?

Ответы на эти вопросы влияют на метод вычисления среднего за период.

Удачи
...
Рейтинг: 0 / 0
11.09.2013, 05:29
    #38393068
korisk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оконные функции по оси времени
Dimitry SibiryakovВторая попытка тоже провалилась. Иди ещё подумай.

Согласен, туплю, но ближайшее время надежда только на телепатов. :(
Возможно, это можно назвать вычислением агрегатной функции по квадрату.


lookat1. Датчики дают показания через
фиксированный интервал времени?
То есть регулярно? Или нет?

Да, регулярно.

lookat2. Как изменяется из меняемая величина
Между показаниями, непрерывно или скачком?

В общем случае скачком.

lookat3. Показания датчиков 1 и 2 синхронизированы по времени?
Удачи
Да, показания синхронизированы. (у одновременных "отсчетов" time одинаковый)

Спасибо.
...
Рейтинг: 0 / 0
11.09.2013, 06:32
    #38393081
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оконные функции по оси времени
korisk
Код: sql
1.
2.
select avg(value2) from (select avg(value) as value2 from triplets
  where id in (1,2) and "time" between time'10:00' and time'14:00'  group by id) as val;

b чем это отличается от обычного
Код: sql
1.
2.
select avg(value) as val from triplets
  where id in (1,2) and "time" between time'10:00' and time'14:00'

?
koriskВозможно, это можно назвать вычислением агрегатной функции по квадрату.по какому такому "квадрату"?
и вообще, не это ли вы ищете?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select cast(g.t as time) as _t,avg(f.r)
from 
generate_series(timestamp'2000-01-01 00:00:00',timestamp'2000-01-01 00:01:00',interval'4 second') as g(t) -- сюда подставить нужное мин/макс время
join
(select qwe.t,random()*100 as r from
 generate_series(timestamp'2000-01-01 00:00:00',timestamp'2000-01-01 00:01:00',interval'1 second') as qwe(t)
 ) f -- а это аналог исходной таблицы
on g.t<=f.t and f.t<g.t+interval '4 second'
group by _t
order by _t
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Оконные функции по оси времени / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]