powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / получение текущего результата функции sum
14 сообщений из 14, страница 1 из 1
получение текущего результата функции sum
    #33446688
Tough
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня/ночи/веч....

Подскажите, как можно получить для каждой строки результата запроса результат агрегации с использованием sum именно до этой строки.
Расшифровка :)
имеется таблица:
rule_name character varying(32) NOT NULL
bytes bigint NOT NULL
pkts bigint NOT NULL
hostname character varying(25)
time timestamp without time zone NOT NULL now()

нужно оптимизировать запрос:
SELECT a.rule_name,a.time,a.bytes,sum(b.bytes) AS sum FROM logs a, logs b WHERE date(a.time)>200512 AND a.rule_name='username' AND b.time<a.time AND date(b.time)>200512 AND b.rule_name='username' GROUP BY a.rule_name,a.time,a.bytes ORDER BY a.time;
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33446760
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
практика показывает что подобные вещи лучше делать руками(в смысле не sql)

а sqlем это что то типа того.. тока не стоит ждать что это все будет быстро...

select
a,
b,
(select sum(c) from xx as a1 where a1.a=a2.a and a1.b<a2.b) as sum_prev_c
from xx as a2
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33446804
Tough
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вобще-то здесь функция нужна подобная уже встроенной sum, но с возможностью получить текущее значение. может она у кого-то уже есть для решения подобных задач? или хоть направление покажите.
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33446889
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Toughвобще-то здесь функция нужна подобная уже встроенной sum, но с возможностью получить текущее значение. может она у кого-то уже есть для решения подобных задач? или хоть направление покажите.в plpgsql в цикле по сортированному набору копите суммы и плюете накопленные строки в RETURN NEXT ... .
Имхо чудно отплюется.
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33447422
Tough
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не совсем понял.
имеется в виду что-то типа?:
CREATE FUNCTION aaa(bigint) RETURNS SETOF bigint AS '
DECLARE
val ALIAS FOR $1;
res bigint;
BEGIN
res:= +val;
RETURN NEXT res;
END;'
language plpgsql;
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33447540
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Toughне совсем понял.
имеется в виду что-то типа?:
CREATE FUNCTION aaa(bigint) RETURNS SETOF bigint AS '
DECLARE
val ALIAS FOR $1;
res bigint;
BEGIN
res:= +val;
RETURN NEXT res;
END;'
language plpgsql;
нет, ~типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE FUNCTION my_groop_fun RETURNS SETOF my_record_type AS '
DECLARE
    rec my_table_type;
    rec_out my_record_type;
BEGIN
	rec_out.summedfield
	
	FOR  rec IN SELECT * FROM my_table WHERE ....
	LOOP
                 rec_out.somefield =  rec.somefield;
                 rec_out.summedfield = rec_out.summedfield +  rec.summedfield;
	RETURN NEXT rec_out;
	END LOOP;
	RETURN
END;'
language plpgsql;
ult pfghjc r a-bb b djpdhfnbn dfib yfhfcnf.obt bnjub
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33447710
Tough
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
грамадное Спасибо, работает.
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33448027
Владимор Конев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ToughДоброго дня/ночи/веч....

Подскажите, как можно получить для каждой строки результата запроса результат агрегации с использованием sum именно до этой строки .Перейти с PostgreSQL на Oracle и юзать в нём аналитические фукции Sum () over ( partition by ... order by ... )
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33448396
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимор Конев Перейти с PostgreSQL на Oracle и чо ви делаете в нашей песочнице с чуждым совком?

У нас и свои совочки есь. Фполне рабочии. А ультра-песочница для избалОванных дядь нам без надобности.
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33448412
Владимор Конев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321и чо ви делаете в нашей песочнице с чуждым совком?Зашел похвастаться писей :-)

А если серьезно, то с PostgreSQL вне работы иногда имею дело, вот и поглядываю - чего интересного для себя может перенять "избалОванный дядя" от воспитанных в строгости и аскетизме товарищей.
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33448423
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, появилась иде я:

Если порыцца тут - можно найти способ создания переменной уровня сессии (не на сленге plpgsql, а в pgperl OR pgtcl). Засим лехко пишутся функции с накоплением (в банальном ньюмеровом типе, а не в наборе). Инициализация переменной проворачивается в WHERE упоминанием некой STABLE ф-ии (создающим переменную и инициализирующим значения оной переменной в 0).

Получается довольно "универсальное" решение. Остается следить, чтобы независимо от путей оптимизатора, ф-ия действовала на выходной набор в требуемом порядке (а вот достижимость последнего не очевидна )
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33448460
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимор Конев Зашел похвастаться писей :-)
<OFF> кстати аптичках:
недавна видел неутешительный вывод некоего исследования (на летучих мышах, а не на птичках): размер gjkjdjq писи находится в обратной зависимости от размера головного мозга. т.ч. делайте выводы </OFF>
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33448596
Владимор Конев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[вообще полный оффтоп]
4321<OFF> кстати аптичках:
недавна видел неутешительный вывод некоего исследования (на летучих мышах, а не на птичках): размер gjkjdjq писи находится в обратной зависимости от размера головного мозга. т.ч. делайте выводы </OFF>Я же не сказал, как именно похвастать я хотел ;-)
А то может как в анектоде:
Код: plaintext
1.
2.
3.
4.
5.
Пациент у врача-соксопотолога на приеме показывает свой половой член.
Там член - одно название: размером с мизинец новорожденного.
Доктор, долго разглядывая сиё чудо в увеличительное стекло, спрашивает:
   - Что, жалуетесь?
Пациент, еле сдерживает от приступа злости и обиды говорит во всё своё горло:
   - Нет, бл*, хвастаюсь !!!


Rhjvt nj
[/вообще полный оффтоп]
...
Рейтинг: 0 / 0
получение текущего результата функции sum
    #33449762
Tough
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
было бы очень не плохо иметь что-то подобное, что предложил товагищь из песочного карьера Oracle. Иметь бы такую ф-ю на с, с навеской именно на столбец запроса.... короче то, что я имел в виду в начале. А агрегатную sum, я упомянул именно по той причине, что операция производится для всех записей столбца, по которому производится агрегация. Например, если убрать из запроса котороый я привел в пример WERE user_name=''. Хотя предложенный здесь вариант в моем случае меня спасает, все же имеет некоторые неудобства, и надобность создавать для каждой подобной таблицы отдельную функцию, или удлинять тело запроса.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / получение текущего результата функции sum
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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