Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
18.11.2007, 15:34
|
|||
|---|---|---|---|
|
|||
Суммы по интервалу |
|||
|
#18+
Добрый день, Не подскажете ли, как правильно построить запрос, если нужно получить суммы данных по интервалам 1мин(10мин, час...). Идея такая, что генериться паттерн типа: SELECT '2007-11-16 10:30:00'::timestamp + g.x * interval'1 minute' FROM generate_series(0, 435) AS g(x)) и делается выборка для данных с timestamp between '2007-11-16 10:30:00' And '2007-11-16 10:31:00' between '2007-11-16 10:31:00' And '2007-11-16 10:32:00' и тд. Получится ли это сделать в sql запросе, или придеться ваять процедуру с циклом? С уважением, А. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.11.2007, 19:10
|
|||
|---|---|---|---|
Суммы по интервалу |
|||
|
#18+
Где-то на этом форуме видел такой вариант: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2007, 10:40
|
|||
|---|---|---|---|
|
|||
Суммы по интервалу |
|||
|
#18+
все гораздо проще. группируйте по функции date_trunk. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2007, 15:18
|
|||
|---|---|---|---|
|
|||
Суммы по интервалу |
|||
|
#18+
Спасибо, Но в варианте с date_trunc не получится выбрать произвольные интервалы - скажем сумма за каждые 15 секунд. В моем варианте с генерацией паттерна можно бы было выбирать по произвольному интервалу, но у меня не получается уложить это в 1 запрос. С уважением, А. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2007, 16:14
|
|||
|---|---|---|---|
Суммы по интервалу |
|||
|
#18+
Alien777Но в варианте с date_trunc не получится выбрать произвольные интервалы - скажем сумма за каждые 15 секунд. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2007, 17:02
|
|||
|---|---|---|---|
|
|||
Суммы по интервалу |
|||
|
#18+
И за это спасибо, но сгенерировать периоды все-таки проще с помощью SELECT '2007-11-07 10:30:00'::timestamp + g * interval'7 minute' FROM generate_series(0, 435) AS intrvl. Просто ставите необходимое значение интервала. Суть в том, что я хочу заменить процедуру типа for intrvl in SELECT '2007-11-07 10:30:00'::timestamp + g * interval'7 minute' FROM generate_series(0, 435) AS intrvl Select Sum(data) FROM table where timestamp between intrvl AND intrvl+7minute одним sql запросом, т.к. полагаю, что запрос будет выполняться быстрее процедуры. Но никак не могу построить такой запрос. С укважением, А. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2007, 20:40
|
|||
|---|---|---|---|
|
|||
Суммы по интервалу |
|||
|
#18+
Получается нечто вроде: SELECT b.t, sum(a.data) FROM XXX a, (SELECT '2007-11-07 10:30:00'::timestamp + g * interval'1 minute' AS t FROM generate_series(0, 5) AS g) b WHERE (date_trunc('minute', a.dealdatetime)>= b.t AND date_trunc('minute', a.dealdatetime) < (b.t + interval'1 minute')) GROUP BY b.t ORDER BY b.t; но работает медленно. Какие-нибудь советы плз. С уважением, А. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.11.2007, 23:21
|
|||
|---|---|---|---|
|
|||
Суммы по интервалу |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2007, 10:37
|
|||
|---|---|---|---|
|
|||
Суммы по интервалу |
|||
|
#18+
Alien777в варианте с date_trunc не получится выбрать произвольные интервалы - скажем сумма за каждые 15 секундгруппируйте по (date_part('epoch',$TIMESTAMP)/date_part('epoch','15 seconds'::interval))::int Alien777Получается нечто вроде: SELECT ... FROM XXX a ... FROM generate_series(0, 5) ... но работает медленно.вот-вот. думаю, джоин с generate_series является не только лишним в этой задаче, но и медленным. 4321date_trunc('second',now())::abstimeпро abstime в доке нехорошее написано The types abstime and reltime are lower precision types which are used internally. You are discouraged from using these types in new applications and are encouraged to move any old ones over when appropriate. Any or all of these internal types might disappear in a future release. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.11.2007, 11:08
|
|||
|---|---|---|---|
Суммы по интервалу |
|||
|
#18+
LeXa NalBat 4321date_trunc('second',now())::abstimeпро abstime в доке нехорошее написано The types abstime and reltime are lower precision types which are used internally. You are discouraged from using these types in new applications and are encouraged to move any old ones over when appropriate. Any or all of these internal types might disappear in a future release.это я читал (когда потребовался подходящий время-датный тип), и это (для меня) плохо. - пока это единственный (из найденных эмприрически) тип даты-времени, который не вызывает проблем при работе с Аксессом в кач-ве клиента (точность хранения не теряется на клиенте, и не вызывает ошибок типа "другой юзер подкрутил данные"). Т.е. такой, который позволяет перенести готовую аксовую приладу с минимальными доделками. А пускаться в суровые доделки старых прилад - нет никакого желания. Лучше уж заново строгать, и, видимо, с другим средством разработки клиента. Второй выход - хранить аксовую дату как float (как оно и есть "на самом деле"). Но тогда ,боюсь, запросы многие придется переписывать - надо тестировать, будет ли джет производить приведение даты-времени в параметрах к флоату и корректно отсылать тот далее - уже постгресу. Да и заплатка это. Ну их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&tablet=1&tid=2004844]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 336ms |

| 0 / 0 |
