Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
Доброго дня/ночи/веч.... Подскажите, как можно получить для каждой строки результата запроса результат агрегации с использованием 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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2005, 14:12 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
практика показывает что подобные вещи лучше делать руками(в смысле не 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2005, 14:31 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
вобще-то здесь функция нужна подобная уже встроенной sum, но с возможностью получить текущее значение. может она у кого-то уже есть для решения подобных задач? или хоть направление покажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2005, 14:41 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
Toughвобще-то здесь функция нужна подобная уже встроенной sum, но с возможностью получить текущее значение. может она у кого-то уже есть для решения подобных задач? или хоть направление покажите.в plpgsql в цикле по сортированному набору копите суммы и плюете накопленные строки в RETURN NEXT ... . Имхо чудно отплюется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2005, 15:06 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
не совсем понял. имеется в виду что-то типа?: CREATE FUNCTION aaa(bigint) RETURNS SETOF bigint AS ' DECLARE val ALIAS FOR $1; res bigint; BEGIN res:= +val; RETURN NEXT res; END;' language plpgsql; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2005, 17:44 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2005, 18:23 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
грамадное Спасибо, работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2005, 19:59 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
ToughДоброго дня/ночи/веч.... Подскажите, как можно получить для каждой строки результата запроса результат агрегации с использованием sum именно до этой строки .Перейти с PostgreSQL на Oracle и юзать в нём аналитические фукции Sum () over ( partition by ... order by ... ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 05:58 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
Владимор Конев Перейти с PostgreSQL на Oracle и чо ви делаете в нашей песочнице с чуждым совком? У нас и свои совочки есь. Фполне рабочии. А ультра-песочница для избалОванных дядь нам без надобности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 10:30 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
4321и чо ви делаете в нашей песочнице с чуждым совком?Зашел похвастаться писей :-) А если серьезно, то с PostgreSQL вне работы иногда имею дело, вот и поглядываю - чего интересного для себя может перенять "избалОванный дядя" от воспитанных в строгости и аскетизме товарищей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 10:35 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
Кстати, появилась иде я: Если порыцца тут - можно найти способ создания переменной уровня сессии (не на сленге plpgsql, а в pgperl OR pgtcl). Засим лехко пишутся функции с накоплением (в банальном ньюмеровом типе, а не в наборе). Инициализация переменной проворачивается в WHERE упоминанием некой STABLE ф-ии (создающим переменную и инициализирующим значения оной переменной в 0). Получается довольно "универсальное" решение. Остается следить, чтобы независимо от путей оптимизатора, ф-ия действовала на выходной набор в требуемом порядке (а вот достижимость последнего не очевидна ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 10:41 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
Владимор Конев Зашел похвастаться писей :-) <OFF> кстати аптичках: недавна видел неутешительный вывод некоего исследования (на летучих мышах, а не на птичках): размер gjkjdjq писи находится в обратной зависимости от размера головного мозга. т.ч. делайте выводы </OFF> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 10:49 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
[вообще полный оффтоп] 4321<OFF> кстати аптичках: недавна видел неутешительный вывод некоего исследования (на летучих мышах, а не на птичках): размер gjkjdjq писи находится в обратной зависимости от размера головного мозга. т.ч. делайте выводы </OFF>Я же не сказал, как именно похвастать я хотел ;-) А то может как в анектоде: Код: plaintext 1. 2. 3. 4. 5. Rhjvt nj [/вообще полный оффтоп] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 11:23 |
|
||
|
получение текущего результата функции sum
|
|||
|---|---|---|---|
|
#18+
было бы очень не плохо иметь что-то подобное, что предложил товагищь из песочного карьера Oracle. Иметь бы такую ф-ю на с, с навеской именно на столбец запроса.... короче то, что я имел в виду в начале. А агрегатную sum, я упомянул именно по той причине, что операция производится для всех записей столбца, по которому производится агрегация. Например, если убрать из запроса котороый я привел в пример WERE user_name=''. Хотя предложенный здесь вариант в моем случае меня спасает, все же имеет некоторые неудобства, и надобность создавать для каждой подобной таблицы отдельную функцию, или удлинять тело запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 15:52 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33448423&tid=2006780]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 370ms |

| 0 / 0 |
