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

Откуда:
Сообщений: 92
Постоянно требуется разработка всё более сложных запросов по просьбам отдела статистики и тому подобных.

Хочу попросить народ поделиться опытом построения таких сложных отчётов:

                  столбцы:
просыпающиеся | зеленоглазые | программисты | сидящие в красном | Всего
до 12 | | | кресле |
строки: |
Васи | 20 | 8 |
Миши | 10 | 6 |
Пети до 25 лет | 45 | 1 | и т.д...
Зелёные Васи | 18 | 3 |
Миши и Пети старше 40 | 12 | 15 |
из них посетивших Кипр | 4 | 2 |

Разумеется все данные нафантазированы.

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

Некоторые мои коллеги пишут один запрос итоговый (и я склоняюсь к такому) - одну строчку таблицы, а потом с помощью union all делают кучу строк по образу и подобию включая в каждую дополнительные условия.

Ещё коллеги сделали процедуру генерящую запрос, который возвращает одну строку таблицы, потом вызывают эту процедуру с разными условиями получают результат (по мне так тот же юньон олл)

Может кто-то делает более хитрые, и элегантные конструкции? Поделитесь опытом.
28 сен 15, 13:32    [18204041]     Ответить | Цитировать Сообщить модератору
 Re: разработка сложных отчётов в оракле (и не только)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47667
А что такого особо хитрого в cross-tab AKA "шахматка"?..
28 сен 15, 13:57    [18204219]     Ответить | Цитировать Сообщить модератору
 Re: разработка сложных отчётов в оракле (и не только)  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 51769
для етого Билл Гейцц придумал Ёксель
28 сен 15, 13:59    [18204232]     Ответить | Цитировать Сообщить модератору
 Re: разработка сложных отчётов в оракле (и не только)  [new]
kva6513
Member

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

Есть пара статеек на Хабре про использование кляузы Model для создание отчетов. Разбираемое там несколько похоже на ваш сферический пример. Гляньте, может что-то пригодится.
28 сен 15, 14:08    [18204296]     Ответить | Цитировать Сообщить модератору
 Re: разработка сложных отчётов в оракле (и не только)  [new]
mad_nazgul
Member

Откуда:
Сообщений: 4700
dmitryk1
Может кто-то делает более хитрые, и элегантные конструкции? Поделитесь опытом.


Да вам OLAP нужен батенька :-)
Поинтересуйтесь есть ли у вашей БД готовое OLAP решение.
Если есть, то постарайтесь его внедрить.
Как минимум OLAP-кубы и предназначены для такого вида отчетов.
28 сен 15, 14:11    [18204316]     Ответить | Цитировать Сообщить модератору
 Re: разработка сложных отчётов в оракле (и не только)  [new]
dmitryk1
Member

Откуда:
Сообщений: 92
Dimitry Sibiryakov,

Ну, в формировании столбцов может и нету, а строки в данном случае не группируются, то есть каждую строку я должен высчитывать с условием, которое я должен прописать в столбцах.

А поскольку строки разные - я их генерю ручками с разными условиями, получается я могу их только юнионом склеить.
Вот у меня и вопрос то был, как можно по другому, не прописывая 20-50 раз (по числу строк) один запрос с небольшими вариациями.

Сможете прислать пример какого-то отчёта который выводит такие данные?
28 сен 15, 14:14    [18204332]     Ответить | Цитировать Сообщить модератору
 Re: разработка сложных отчётов в оракле (и не только)  [new]
dmitryk1
Member

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

Ну да. Вы про выдачу общих данных и отдачу в руки пользователя итогового подсчёта?
Или имеется в виду макрос, который это будет считать коннектясь к базе? Или ещё что-то?
28 сен 15, 14:18    [18204356]     Ответить | Цитировать Сообщить модератору
 Re: разработка сложных отчётов в оракле (и не только)  [new]
dmitryk1
Member

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

Спасибо. Похоже это замена олапу. Буду изучать :)
28 сен 15, 14:41    [18204509]     Ответить | Цитировать Сообщить модератору
 Re: разработка сложных отчётов в оракле (и не только)  [new]
DirksDR
Member

Откуда: Пермь
Сообщений: 340
dmitryk1,

1.На одном листе Excel рисуете шаблон отчета, названия строк, колонок, форматирование и т.д.
2.На втором листе в ячейках, соответствующих ячейкам данных шаблона, записываете select-ы ... ,
или вызовы процедур, или параметры запросов.
3.Пишете макрос, который генрирует запросы по данным 2-го листа, обращается к серверу, и складывает
результаты в соотв.ячейки 1-го листа.
Для небольших неформализуемых отчетов можно применять такой подход.
30 сен 15, 15:19    [18215261]     Ответить | Цитировать Сообщить модератору
 Re: разработка сложных отчётов в оракле (и не только)  [new]
dmitryk1
Member

Откуда:
Сообщений: 92
DirksDR
dmitryk1,
[skip]
Для небольших неформализуемых отчетов можно применять такой подход.


Тут, возможно, будет проще тогда сохранить документ как хтмл, затем с него с сервера дёргать данные и вставлять в поля, названные в соответствии с айдишником.
И данных можно дёргать много и с параметрами. У меня даже такое реализовано :)
И безопасность тут лучше работает чем в экселе, и не требует установки какого-то дополнительного софта.

В общем-то вопрос затеял исключительно чтобы узнать, вдруг есть какие-то ещё более хитрые способы, которые я упустил. Исключительно чтобы сократить количество шагов выполняемых для изменения отчёта. Сейчас получится - изменить страницу, добавив поля которые надо заполнить, изменить яваскрипт, чтобы получал новые данные, если это не расширение текущего запроса, а ещё один дополнительный запрос, ну и непосредственно сам запрос. В принципе можно извратиться и этап изменения яваскрипта опустить, вписав необходимое в хтмл код (конфиг), но всё равно два шага.
Но лень-матушка тредует и это упростить :)

Вот про "кляузы Model" читаю. В принципе многообещающе.
2 окт 15, 12:23    [18225604]     Ответить | Цитировать Сообщить модератору
 Re: разработка сложных отчётов в оракле (и не только)  [new]
A. Gromov
Member

Откуда: Киев
Сообщений: 66
dmitryk1,



откройте для себя функцию pivot
5 окт 15, 09:03    [18234425]     Ответить | Цитировать Сообщить модератору
Все форумы / Разработка информационных систем Ответить