Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Аналитические функции / 13 сообщений из 13, страница 1 из 1
20.11.2017, 17:45
    #39556340
SkinDiamond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитические функции
Доброго времени суток всем
У меня есть таблица с некоторыми данными,например:
Код Имя Сумма
1 Иван 124
1 Иван 155
2 Андрей 173
2 Андрей 216
3 Игорь 312
3 Игорь 104
4 Василий 506
4 Василий 32
5 Петр 11
5 Петр 13

Вопрос состоит в том,что нужно чтобы подсчитывалась общая сумма по каждому коду,то есть сумма по всем строкам с кодом 1,2 и т.д и чтобы это общая сумма отображалась рядом с каждой строкой с одним кодом+ в конце общая сумма всех полей
Знаю что это можно как то сделать с помощью аналитических функций,но не знаю как их правильно использовать
...
Рейтинг: 0 / 0
20.11.2017, 17:47
    #39556342
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитические функции
SkinDiamondс помощью аналитических функций,но не знаю как их правильно использоватьТ.е. даже не попробовал, а сразу на форум?
...
Рейтинг: 0 / 0
20.11.2017, 17:47
    #39556343
SkinDiamond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитические функции
Elic,
Попробовал,но из за незнания правильного синтаксиса,получалась абсолютная ерунда
...
Рейтинг: 0 / 0
20.11.2017, 17:49
    #39556345
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитические функции
SkinDiamondиз за незнания правильного синтаксиса,получалась абсолютная ерунда
Правильный синтаксис тут:
https://docs.oracle.com/cloud/latest/db112/SQLRF/functions004.htm#SQLRF06174
...
Рейтинг: 0 / 0
20.11.2017, 17:51
    #39556346
SkinDiamond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитические функции
andrey_anonymous,Благодарю
...
Рейтинг: 0 / 0
21.11.2017, 08:40
    #39556543
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитические функции
SkinDiamond,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with q as (select 1 as code, 'Иван' as name, 124 as sum from dual union all
select 1, 'Иван', 155 from dual union all
select 2, 'Андрей', 173 from dual union all
select 2, 'Андрей', 216 from dual union all
select 3, 'Игорь', 312 from dual union all
select 3, 'Игорь', 104 from dual union all
select 4, 'Василий', 506 from dual union all
select 4, 'Василий', 32 from dual union all
select 5, 'Петр', 11 from dual union all
select 5, 'Петр', 13 from dual)

select q.code
     , q.name
     , q.sum
     , sum(sum) OVER(partition by code) as "sum(code)"
     , sum(sum) OVER() as "sum(all)" from q
...
Рейтинг: 0 / 0
22.11.2017, 18:17
    #39557760
avanyugin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитические функции
Мне кажется тс имел ввиду:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with q as (select 1 as code, 'Иван' as name, 124 as sum from dual union all
select 1, 'Иван', 155 from dual union all
select 2, 'Андрей', 173 from dual union all
select 2, 'Андрей', 216 from dual union all
select 3, 'Игорь', 312 from dual union all
select 3, 'Игорь', 104 from dual union all
select 4, 'Василий', 506 from dual union all
select 4, 'Василий', 32 from dual union all
select 5, 'Петр', 11 from dual union all
select 5, 'Петр', 13 from dual)
select code, sum(sum) sum from q
group by rollup(code)
...
Рейтинг: 0 / 0
23.11.2017, 09:04
    #39558022
SkinDiamond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитические функции
avanyugin,Да,именно это,спасибо
...
Рейтинг: 0 / 0
23.11.2017, 09:11
    #39558027
SkinDiamond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитические функции
Здравствуйте
У меня имеется таблица вида
Код Имя Сумма
1 Игорь 300
Строк большое кол-во
У меня возникло две проблемы,первая это нужно посчитать долю суммы каждой строки от общей суммы по каждому коду,т.е общая сумма для кода 1 одна,для кода 2 другая и так далее
Вторая проблема заключается в том,что итоговая сумма может быть равна нулю,то есть допустим у первой строки сумма -200,у второй +200,в итоге 0,как учесть такой вариант развития события и избежать ошибок

Заранее прошу не ругать меня,только учусь работать с ORACLE
...
Рейтинг: 0 / 0
23.11.2017, 09:14
    #39558030
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитические функции
http://www.sql.ru/forum/rules.aspx Рекомендации
Не рекомендуется:
Публиковать сообщения с бессмысленными темами. Например: <Люди помогите>, <Проблема!!>, <Срочно нужна помощь!>, <может знаете?> и т.д.


Создавать несколько топиков с одинаков ой темой .
...
Рейтинг: 0 / 0
23.11.2017, 09:15
    #39558031
Аналитические функции
SkinDiamondСтрок большое кол-вовыражаясь формальным языком - более одной.

SkinDiamondнужно посчитатьРешение зависит от имеющихся навыков. Я бы рекомендовал счетные палочки.

SkinDiamondизбежать ошибокЧтобы чего избежать нужно сначала это что-то получить.
...
Рейтинг: 0 / 0
23.11.2017, 09:15
    #39558032
Аналитические функции
SkinDiamond,

тогда встречный вопрос - какую долю "минус двести" будет составлять от нуля?

как определишься с ответом, почитай про ratio_to_report()
...
Рейтинг: 0 / 0
23.11.2017, 09:24
    #39558036
SkinDiamond
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналитические функции
Добрый Э - Эх,

На счет доли не знаю,я просто привел -200 в качестве примера
спасибо Вам за совет,оператор помог посчитать долю,но осталась проблема с нулем.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Аналитические функции / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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