powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Процедура выборки из двух таблиц
17 сообщений из 17, страница 1 из 1
Процедура выборки из двух таблиц
    #33802523
postt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть две таблицы: T1 (p1 double, p2 int, p3 timestamp) и T2 (p1 double, p2 int p3 date). Таблица T2 - это агрегация таблицы T1 по времени (в ней суммируется поле p1 для каждого p2 раз в сутки,а в таблице T1 хранятся почасовые данные).
Требуется написать процедуру, которая возвращает агрегированные посуточно данные из таблицы T2 с начала месяца до текущего дня не включительно (так как они попадают туда только в 00:00:00), а также данные за неполный сегодняшний день (агрегируя их) из таблицы T1.
Требуется написать функцию, в которую как параметр заносится дата, начиная с которой выводить данные.
И еще как сделать, чтобы автоматически в определенное время выполнялось это агрегирование средствами Postgres. Сейчас это делается cron-ом.
Заранее спасибо за помощь,а то я начинающий в написании функций(процедур).
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802644
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select sum(p1), p2, p3
  from t1
 where date_trunc('day', p3) = current_date
 group by p2, p3
 union
select p1, p2, p3
  from t2
 where p3 > date_trunc('month', p3)
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802649
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы: не проверял
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802777
postt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как это оформить в виде функции, в которою передается дата, начиная с которой выводить данные, меня с этим в основном проблемы?
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802831
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create or replace function t1_agr(date)
  returns setof t1 as
'
select sum(p1), p2, p3
  from t1
 where date_trunc(''day'', p3) = current_date
 group by p2, p3
 union
select p1, p2, p3
  from t2
 where p3 > $1;
' language sql;

почитай тут

зы: не проверял
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802838
postt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И как сделать средствами Postgres автоматическое выполнение заданной процедуры в определенные моменты времени. Как я понимаю- это относится к логике базы и не должно отделяться от нее.
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802839
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
совсем забыл, вызывать так
Код: plaintext
1.
select * from t1_agr('2006-06-01'::date);
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802878
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
postt.... сделать средствами Postgres автоматическое выполнение заданной процедуры в определенные моменты времени....
нельзя, помоему.
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802884
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то я не понял тебе функция для отчета/показа информации нужна или для агрегирования?
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802904
postt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы. Для чего нужно returns setof t1?
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802912
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы функция возвращала набор данных(несколько строк)
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802927
postt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть в том,что есть одна таблица логов за каждый час и еще создается раз в сутки агрегированная таблица для ускорения работы. Но так как данные обновляются каждый час и нужна информация в реальном времени, отчет берется из двух таблиц (агрегированной и оставшаяся информация агрегируется из детальной таблицы).
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802984
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select sum(p1), p2, p3
  from t1
 where date_trunc('day', p3) = current_date /* данные за сегодняшний день */
 group by p2, p3
 union
select p1, p2, p3
  from t2
 where p3 > date_trunc('month', current_date) /* данные за текущий месяц */

что еще надо?
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33802988
postt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZemAчтобы функция возвращала набор данных(несколько строк)
Данные же извлекаются из разных таблиц,а указана только одна t1. Буду разбираться. Есть ли инфа на русском по этому вопросу?
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33803049
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
postt ZemAчтобы функция возвращала набор данных(несколько строк)
Данные же извлекаются из разных таблиц,а указана только одна t1. Буду разбираться. Есть ли инфа на русском по этому вопросу?
смотри внимательнее
Код: plaintext
1.
2.
3.
4.
select sum(p1), p2, p3
  from t1 /* T1 */
 where date_trunc('day', p3) = current_date /* данные за сегодняшний день */
 group by p2, p3
Код: plaintext
1.
 union
Код: plaintext
1.
2.
3.
select p1, p2, p3
  from t2 /* T2 */
 where p3 > date_trunc('month', current_date) /* данные за текущий месяц */

поищи в яндексе "Мартин Грубер Понимание SQL"
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33803175
postt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
returns setof t1 as - я про это.
...
Рейтинг: 0 / 0
Процедура выборки из двух таблиц
    #33803473
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так надо
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create or replace function t1_agr()
  returns setof t2 as
'
select sum(p1), p2, date_trunc(''day'', p3)
  from t1
 where date_trunc(''day'', p3) = current_date
 group by p2, p3
 union
select p1, p2, p3
  from t2
 where p3 > date_trunc(''month'', current_date)
' language sql;
returns setof t2 as говорит о том что функция будет возвращать строки типа t2 , т.е. (p1 double, p2 int p3 date)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Процедура выборки из двух таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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