Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Вывести один итог  [new]
Затупил
Guest
with x as (
select 0 a, 1 n, 10 b, 1 c from dual union all 
select 1 a, 2 n, 20 b, 1 c from dual union all 
select 1 a, 3 n, 10 b, 1 c from dual union all 
select 0 a, 4 n, 30 b, 2 c from dual union all 
select 1 a, 4 n, 20 b, 2 c from dual union all 
select 0 a, 4 n, 40 b, 1 c from dual union all 
select 1 a, 7 n, 60 b, 1 c from dual
)
select grouping(x.a)+grouping(x.n) ord, x.a, x.n, sum(x.b), sum(x.c) from x
group by rollup (x.a, x.n)
order by ord desc
Как бы составить запрос так (без наворачивания еще одного запроса сверху),
чтобы он выдвал мне только один итог, когда
grouping(x.a)+grouping(x.n)=2
а итоги
grouping(x.a)+grouping(x.n)=1
мне не нужны.
Повторю - без оборачивания этого в еще один запрос сверху, то есть сразу из X одним селектом
отдельно считать сумму и цеплять юнионом тоже негуд, хотя и вариант, конечно.
17 окт 08, 13:24    [6321053]     Ответить | Цитировать Сообщить модератору
 Re: Вывести один итог  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
having grouping(x.a)+grouping(x.n) = 2?
17 окт 08, 13:28    [6321093]     Ответить | Цитировать Сообщить модератору
 Re: Вывести один итог  [new]
Затупил
Guest
Ну в общем да - пойдеть. Спс. :)
17 окт 08, 13:33    [6321154]     Ответить | Цитировать Сообщить модератору
 Re: Вывести один итог  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
а я правильно поинмаю что
select x.a, x.n, sum(x.b), sum(x.c) from x
group by rollup (x.a, x.n)
having grouping(x.a)+grouping(x.n)=2
эквивалентно
select x.a, x.n, sum(x.b), sum(x.c) from x
group by x.a, x.n,
????
Или таки у затеи есть более глубокий, не отраженный здесь смысл?
17 окт 08, 13:35    [6321183]     Ответить | Цитировать Сообщить модератору
 Re: Вывести один итог  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
Пардон, гдето гоню
17 окт 08, 13:38    [6321208]     Ответить | Цитировать Сообщить модератору
 Re: Вывести один итог  [new]
Затупил
Guest
[quot]Или таки у затеи есть более глубокий, не отраженный здесь смысл?[/quot]
Изанчально было
select x.a, x.n, sum(x.b), sum(x.c) from x
group by x.a, x.n
Потом потребовалось вывести еще сумму в конце
дописал rollup, но он вовзаращет кучу ненужных промежуточных итогов еще,
вот и затупил, как бы попроще убрать ненужные пром. итоги.
17 окт 08, 13:39    [6321221]     Ответить | Цитировать Сообщить модератору
 Re: Вывести один итог  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
select null a, null  n, sum(x.b), sum(x.c) from x
Без всяких груп бай
17 окт 08, 13:39    [6321227]     Ответить | Цитировать Сообщить модератору
 Re: Вывести один итог  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Вот так
group by rollup ((x.a, x.n))
17 окт 08, 13:40    [6321236]     Ответить | Цитировать Сообщить модератору
 Re: Вывести один итог  [new]
Затупил
Guest
Да нет же, господа, все уже нормально - группировка мне все равно нужна,
плюс внизу еще итоговая сумма, то есть group by остается палюбасу,
плюс добавить having, чтобы выводился, только один общий итог, а не куча пром.итогов.
17 окт 08, 13:44    [6321273]     Ответить | Цитировать Сообщить модератору
 Re: Вывести один итог  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
Затупил
Да нет же, господа

Попробуй рецепт wurdu, он честней
17 окт 08, 13:45    [6321290]     Ответить | Цитировать Сообщить модератору
 Re: Вывести один итог  [new]
Отвис
Guest
О!
group by rollup ((x.a, x.n))
Точно - это круче, а всего-то скобки добавить, кто бы знал, афигеть. Круто.
Спасибо. Тема исчерпана, похоже.
17 окт 08, 13:49    [6321324]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить