Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Вывести значение при максимальном value и просуммировать все остальные value  [new]
zorlo
Member

Откуда:
Сообщений: 237
Добрый день! Есть такая табличка

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 TR
2 121 41
5 61 34
9 34 33



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

Максимальное вроде понятно как вывести, а вот ещё при этом просуммировать - не догадался пока. Может какую то наводочку дадите)

Сообщение было отредактировано: 8 июн 21, 17:01
17 май 21, 18:11    [22323240]     Ответить | Цитировать Сообщить модератору
 Re: Вывести значение при максимальном value и просуммировать все остальные value  [new]
zorlo
Member

Откуда:
Сообщений: 237
zorlo,

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

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


Сообщение было отредактировано: 8 июн 21, 17:02
17 май 21, 18:12    [22323241]     Ответить | Цитировать Сообщить модератору
 Re: Вывести значение при максимальном value и просуммировать все остальные value  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 3070
zorlo,

в чем подвох?
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
17 май 21, 18:20    [22323247]     Ответить | Цитировать Сообщить модератору
 Re: Вывести значение при максимальном value и просуммировать все остальные value  [new]
=nomad=
Member

Откуда:
Сообщений: 235
А в чем ошибка? Как по мне: всё верно в результате. Если же вопрос про последнюю строку (GR=9), то в MTR вы выбираете максимальное значение из всех tr, но перед этим вы фильтром выбираете только строки с максимальным value (т.е. в данном случае last ORDER BY value = 20)
8 июн 21, 16:53    [22332992]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить