powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как просуммировать колонку?
11 сообщений из 11, страница 1 из 1
как просуммировать колонку?
    #39271010
kkv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть талица:
n24112
нужно получить такую, чтоб каждое поледующее значение "sum", суммировалось с предыдущим "sum" и текущим "n", т.е. суммировалось по возрастающей.
ну или чтоб в колонке "sum" была сумма всех "n" в этой и вышестоящих строках (что тоже самое)
nsumcomment 22 --2+0=2 46 --2+4=6 17 --6+1=7 или 2+4+1=718 --7+1=8 или 2+4+1+1=8210 --8+2=10 или 2+4+1+1+2=10
...
Рейтинг: 0 / 0
как просуммировать колонку?
    #39271026
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kkv79по возрастающейc 2012 задаешь вопросы, а с основами реляционных бд так и не ознакомился.
...
Рейтинг: 0 / 0
как просуммировать колонку?
    #39271027
kkv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага, не ознакомился...
есть ответ на мой вопрос?
...
Рейтинг: 0 / 0
как просуммировать колонку?
    #39271029
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kkv79есть талица:
n24112
нужно получить такую, чтоб каждое поледующее значение "sum", суммировалось с предыдущим "sum" и текущим "n", т.е. суммировалось по возрастающей.
ну или чтоб в колонке "sum" была сумма всех "n" в этой и вышестоящих строках (что тоже самое)
nsumcomment 22 --2+0=2 46 --2+4=6 17 --6+1=7 или 2+4+1=718 --7+1=8 или 2+4+1+1=8210 --8+2=10 или 2+4+1+1+2=10

для такой таблицы это плохо определенная задача, нет у нее "вышестоящих строк","предыдущих" и "последующих"
...
Рейтинг: 0 / 0
как просуммировать колонку?
    #39271045
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kkv79есть талица:
n24112
нужно получить такую, чтоб каждое поледующее значение "sum", суммировалось с предыдущим "sum" и текущим "n", т.е. суммировалось по возрастающей.
ну или чтоб в колонке "sum" была сумма всех "n" в этой и вышестоящих строках (что тоже самое)
nsumcomment 22 --2+0=2 46 --2+4=6 17 --6+1=7 или 2+4+1=718 --7+1=8 или 2+4+1+1=8210 --8+2=10 или 2+4+1+1+2=10


как-то так...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
 with t as (
   select unnest('{2,4,1,1,2}' :: int[]) as n
)


select n, sum(n) over( order by rn) from (
	select   n, row_number()  over ()  as rn from t
) as t2



nsum22461718210
...
Рейтинг: 0 / 0
как просуммировать колонку?
    #39271062
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimonz80
как-то так...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
 with t as (
   select unnest('{2,4,1,1,2}' :: int[]) as n
)


select n, sum(n) over( order by rn) from (
	select   n, row_number()  over ()  as rn from t
) as t2



nsum22461718210

а в случае реальной таблицы какой "порядок" , которые случайно зафетчится при запросе?
...
Рейтинг: 0 / 0
как просуммировать колонку?
    #39271136
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonhson,

В реальной таблице есть другие колонки, по которым можно явно сортировать.
Если ORDER BY не указан, то порядок вывода не определён по стандарту, и будет соответствовать тому, в каком порядке данные отдаёт нижележащий узел в плане.
...
Рейтинг: 0 / 0
как просуммировать колонку?
    #39271160
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я понимаю, что не определён, но сдаётся мне у автора иное мнение
...
Рейтинг: 0 / 0
как просуммировать колонку?
    #39271247
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jonhsondimonz80как-то так...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
 with t as (
   select unnest('{2,4,1,1,2}' :: int[]) as n
)


select n, sum(n) over( order by rn) from (
	select   n, row_number()  over ()  as rn from t
) as t2



nsum22461718210

а в случае реальной таблицы какой "порядок" , которые случайно зафетчится при запросе?

а в случае реальной таблицы где надо посчитать набегающий итог сортировать придется по любому, тк результат зависит от порядка суммируемых элементов. Именно по этому в примере есть суррогат в виде row_number(), чтобы было за что зацепиться sum() over (order by ...), не изменив порядок, предложенный ТС.

отсортируем по другому и результат немного не тот
Код: sql
1.
2.
3.
4.
5.
 with t as (
   select unnest('{2,4,1,1,2}' :: int[]) as n
)

select n, sum(n) over (order by n ) from t



nsum1212 2626410


без сортировки набегающего итога не будет совсем
Код: sql
1.
2.
3.
4.
5.
 with t as (
   select unnest('{2,4,1,1,2}' :: int[]) as n
)

select n, sum(n) over ( ) from t



nsum210410110110210

Короче, без сортировки никак. Хошь набегающий итог - сортируй!)))
...
Рейтинг: 0 / 0
как просуммировать колонку?
    #39271258
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты это автору объясни, а не мне
...
Рейтинг: 0 / 0
как просуммировать колонку?
    #39275962
kkv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как просуммировать колонку?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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