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

Откуда:
Сообщений: 24
проблема такая:

Есть данные.
Мы их группируем по какому-то полю получаем отчет. допустим типа
а)
отдел 1 100руб
отдел 200 150 руб и т.д.

сгруппировав по группинг сетсам ( 'Отдел', '' ) мы получим более нужный отчет
б)
Итого: 1000 руб
отдел 1 100руб
отдел 200 150 руб

а теперь нужно сделать отчет типа
в)
Итого: 1000 руб 100%
отдел 1 100руб 10%
отдел 200 150 руб 15%

т.е. с отношением к общему числу.
сейчас приходится суммировать отдельным запросом и на него делить, т.е. лишний раз перелопачивать одно и тоже. что-то вроде

select coalesce(dep, 'итого') as dep, ss_sum as sum, (ss_sum/max(tot.cnt)) as perc
from @tbl
,
(
select sum(ss_sum) as cnt
from @tbl
) tot
group by grouping sets ..., order by ...

т.е. 2 раза лезть в таблицу, а так как данных довольно много то даже этот простой select sum(ss_sum) as tot занимает весьма ощутимое время. а ведь эти данные у нас есть уже в таблице.


можно ли напрямую из отчета б) получить отчет в), т.е. поделить на конкретное поле в выборке?
это очень мило и легко реализуется в екселе но не могу придумать как сделать в SQL.

P.S. DB2
7 фев 06, 13:47    [2329428]     Ответить | Цитировать Сообщить модератору
Все форумы / Вопрос-Ответ Ответить