В формуле подсуммы можно обратиться к значению подсуммы определенного уровня группировки. Для этого в формуле подсуммы используется дополнитлеьный параметр n, принимающий значения -1, -2 и т.д. Формула выглядит следующим образом:
SUM([Имя_столбца],n)
Отсчет производится от верхнего уровня группировки, который считается нулевым (формула для этого уровня употребляется без параметра n).
Пример
В качестве примера рассмотрим отчет, в котором вычисляется количество посещений каждого врача и процент его посещений от общего количества посещений пациентов.
При формировании запроса выбирается основная таблица История заболевания и связанные с ней - Талон амбулаторного пациента и Врачи и пользователи. Выбираются поля MEDECINS_ID и Специальность таблицы Врачи и пользователи. По ним устанавливается группировка (рис. 2.4.10).
Создаются выражения:
Врач |
min(%DOC_NAME_SP()) |
ФИО врача и специальность |
Всего посещений |
count(*) |
Количество посещений |
Всего пациентов |
count(distinct MOTCONSU.PATIENTS_ID ) |
Количество пациентов |
Полученный запрос возвращает количество посещений и уникальных пациентов.
Рисунок 2.4.10. Запрос "Врачи, количество посещений"
Нужно вычислить процент посещений для каждого врача. В настройках внешнего вида отчета создается группа по полю Врач (рис. 2.4.11).
Рисунок 2.4.11. Отчет с группировкой по врачу
Затем создается вычислимое поле Всего посещений % (рис. 49). Выражение для подсуммы:
SUM([Всего посещений])*100/SUM([Всего посещений],-1)
Выражение для итоговой подсуммы
SUM([Всего посещений])*100/SUM([Всего посещений])
Здесь
SUM([Всего посещений]) — это количество посещений для уровня группировки Врач,
SUM([Всего посещений],-1) — количество посещений, вычисленное для уровня В ИТОГЕ. Параметр n=-1, так как итоговая подсумма отстоит на 1 уровень от группировки Врач.
Итоговая подсумма вычисляется для всех посещений, поэтому формула для нее не содержит дополнительного параметра.
Рисунок 2.4.12. Формулы для подсуммы "Всего посещений, %"
·Кнопками Условное форматирование ячеек групповых подсумм и Условное форматирование ячеек итоговых подсумм открывается окно (рис. 2.4.9), где можно изменить цвет шрифта и фона ячейки в зависимости от значения подсуммы. |
Пример отчета представлен на рис. 2.4.13.
Рисунок 2.4.13. Пример отчета "Врачи, количество посещений"
Если в отчет добавить уровень группировки — например, создать группировку по отделению (рис. 2.4.14), выражения для поля Всего посещений % изменятся соответствующим образом.
Рисунок 2.4.14. Отчет с группировками по врачу и отделению
Выражение для подсуммы:
SUM([Всего посещений])*100/SUM([Всего посещений],-2)
Выражение для итоговой подсуммы
SUM([Всего посещений])*100/SUM([Всего посещений],-1)
В первом выражении для вычисления итоговой подсуммы используется выражение SUM([Всего посещений],-2), так как уровень группировки Врач отстоит на 2 уровня от итоговой подсуммы (В ИТОГЕ). Во втором выражении вычисляется процент посещений для отделения. Группировка по отеделнию отстоит на 1 уровень от итоговой подсуммы.
Пример отчета представлен на рис. 2.4.15.
Рисунок 2.4.15. Пример отчета "Врачи, количество посещений"