powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / агрегат - произведение вместо суммы
3 сообщений из 3, страница 1 из 1
агрегат - произведение вместо суммы
    #39406099
Есть задача агрегирования значений, но с перемножением вместо суммы. Никак не найду решения для любого количества элементов. Вот пример.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
with t as (
	select 'a' a, 10 b from dual union all
	select 'b' a, 2  b from dual union all
	select 'b' a, 10 b from dual union all
	select 'c' a, 2  b from dual union all
	select 'c' a, 3  b from dual union all
	select 'c' a, 10 b from dual
)


Результат должен быть вида
Код: plsql
1.
2.
3.
a	10
b	20
c	60


То есть для каждого значения a надо перемножить все значения b. Значения b для одного a уникальные.
Пока смог только с использованием поиска предыдущих значений. Но здесь надо знать сколько разных значений максимально может быть. Та и тупо как-то. Может кто знает стандартное решение для такого случая (для N значений)? Или предложит более умный вариант?
Вот мой вариант.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
with t as (
	select 'a' a, 10 b from dual union all
	select 'b' a, 2  b from dual union all
	select 'b' a, 10 b from dual union all
	select 'c' a, 2  b from dual union all
	select 'c' a, 3  b from dual union all
	select 'c' a, 10 b from dual
), t1 as (
	select 
		a,
		b b0,
		nvl(lag(b) over (partition by a order by b),1) b1,
		nvl(lag(b,2) over (partition by a order by b),1) b2,
		nvl(lag(b,3) over (partition by a order by b),1) b3,
		nvl(lag(b,4) over (partition by a order by b),1) b4,
		nvl(lag(b,5) over (partition by a order by b),1) b5,
		nvl(lag(b,6) over (partition by a order by b),1) b6
	from t
)
select
	a, max(b0*b1*b2*b3*b4*b5*b6) b
from t1
group by a


Спасибо заранее.
...
Рейтинг: 0 / 0
агрегат - произведение вместо суммы
    #39406111
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопросящийагрегирования значений, но с перемножением вместо суммыСамодельная агрегатная функция или известный математический трюк
...
Рейтинг: 0 / 0
агрегат - произведение вместо суммы
    #39406121
Elicвопросящийагрегирования значений, но с перемножением вместо суммыСамодельная агрегатная функция или известный математический трюк
Век живи, век учись. Про "известный математический трюк" не знал. Подходит. Спасибо.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / агрегат - произведение вместо суммы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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