powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывести значение при максимальном value и просуммировать все остальные value
4 сообщений из 4, страница 1 из 1
Вывести значение при максимальном value и просуммировать все остальные value
    #40070880
zorlo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Есть такая табличка

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with t as (
select 2 gr, 1   value, 22 tr from dual union all
select 2 gr, 0   value, 33 tr from dual union all
select 2 gr, 120 value, 41 tr from dual union all
select 5 gr, 2   value, 22 tr from dual union all
select 5 gr, 3   value, 33 tr from dual union all
select 5 gr, 56  value, 34 tr from dual union all
select 9 gr, 20  value, 33 tr from dual union all
select 9 gr, 2   value, 34 tr from dual union all
select 9 gr, 12  value, 35 tr from dual
)

select * from t



Нужно вывести вот так
GR VALUE TR2 121 415 61 349 34 33


То есть взять tr, там где max(value) и при это по групе GR нужно value просуммировать.

Максимальное вроде понятно как вывести, а вот ещё при этом просуммировать - не догадался пока. Может какую то наводочку дадите)
...
Рейтинг: 0 / 0
Вывести значение при максимальном value и просуммировать все остальные value
    #40070881
zorlo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zorlo,

Продублирую пример, с хештегами почему то плохо вставился

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t as (
select 2 gr, 1 value, 22 tr from dual union all
select 2 gr, 0 value, 33 tr from dual union all
select 2 gr, 120 value, 41 tr from dual union all
select 5 gr, 2 value, 22 tr from dual union all
select 5 gr, 3 value, 33 tr from dual union all
select 5 gr, 56 value, 34 tr from dual union all
select 9 gr, 20 value, 33 tr from dual union all
select 9 gr, 2 value, 34 tr from dual union all
select 9 gr, 12 value, 35 tr from dual
)
select * from t
...
Рейтинг: 0 / 0
Вывести значение при максимальном value и просуммировать все остальные value
    #40070886
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zorlo,

в чем подвох?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
SQL> ed
Wrote file afiedt.buf

  1  with t as (
  2  select 2 gr, 1 value, 22 tr from dual union all
  3  select 2 gr, 0 value, 33 tr from dual union all
  4  select 2 gr, 120 value, 41 tr from dual union all
  5  select 5 gr, 2 value, 22 tr from dual union all
  6  select 5 gr, 3 value, 33 tr from dual union all
  7  select 5 gr, 56 value, 34 tr from dual union all
  8  select 9 gr, 20 value, 33 tr from dual union all
  9  select 9 gr, 2 value, 34 tr from dual union all
 10  select 9 gr, 12 value, 35 tr from dual
 11  )
 12  select gr,sum(value) sv,max(tr)  KEEP (DENSE_RANK last ORDER BY value) mtr
 13  from t group by gr
 14* order by 1
SQL> /

        GR         SV        MTR
---------- ---------- ----------
         2        121         41
         5         61         34
         9         34         33

SQL>



.....
stax
...
Рейтинг: 0 / 0
Вывести значение при максимальном value и просуммировать все остальные value
    #40076463
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем ошибка? Как по мне: всё верно в результате. Если же вопрос про последнюю строку (GR=9), то в MTR вы выбираете максимальное значение из всех tr, но перед этим вы фильтром выбираете только строки с максимальным value (т.е. в данном случае last ORDER BY value = 20)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывести значение при максимальном value и просуммировать все остальные value
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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