Среднее в СКД

1. DolPew 22 14.03.16 14:05 Сейчас в теме
Добрый день,
Возник такой вопрос: необходимо просчитать среднее значение группировок в СКД.
Проблема в том, что среднее должно быть рассчитано на основе результата предыдущего уровня группировки.
Например
Среднее Значений бубликов
Регион 1 , а должно быть 4 - 8/на два сотрудника
Сотрудники
Иванов 3 - 1+1+1
Петров 5 - 1+1+1+1+1


Как такое сотварить?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 14.03.16 16:12 Сейчас в теме
(1) DolPew, а количество группировок фиксированное ?
3. DolPew 22 15.03.16 16:48 Сейчас в теме
(2) В том что и дело что нет
4. tristarr1 58 16.03.16 10:40 Сейчас в теме
А можно в экселе пример?
5. lishniy 132 29.11.23 12:30 Сейчас в теме
Подниму старую тему. Должен же быть простой способ посчитать среднее по группе?
Накидал простой запрос.
ВЫБРАТЬ
	1 КАК Зн,
	"Гр1" КАК Изм,
	"стр1" КАК Стр,
	"ог1" как ОГ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	1,
	"Гр1",
	"стр2"
	,"ог2"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	1,
	"Гр1",
	"стр3"
	,"ог2"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	1,
	"Гр1",
	"стр4"
	,"ог2"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	10,
	"Гр2",
	"стр5"
	,"ог2"
Показать

Ожидаю получить значения выделенные красным.
Даже если прописать ВычислитьВыражениеСГруппировкойМассив для всех группировок, общий итог считает не верно.
Прикрепленные файлы:
6. Said-We 29.11.23 13:04 Сейчас в теме
(5) Можно рассчитать всё запросом и в СКД только выводить нужные значения.
Вариант решения дубовый + лишние колонки, но так что бы понять суть алгоритма и на 1С можно было бы переписать.
(в верхнем подзапросе вместо av2, av3 надо указать, но картинку переделывать лень :-) )

Дерево обходится правильным образом рекурсией, но 1С рекурсию в запросах не поддерживает.
Пример рекурсии в SQL запросах приложил.
Прикрепленные файлы:
7. Said-We 29.11.23 13:39 Сейчас в теме
(5) Простой пример обхода дерева рекурсией в SQL - пост 8:
https://forum.infostart.ru/forum9/topic306275/
8. lishniy 132 29.11.23 13:53 Сейчас в теме
(6) Я для примера запрос кинул показать проблему. Так то все намного сложнее и в sql я запрос не прокину. В 1С оконные функции не завезли.
Только самому обходить результат и формировать ТЗ только остается?
9. Said-We 29.11.23 14:13 Сейчас в теме
(8) Нумерацию в 1С завезли. Если нужна нумерация по группам в 1С, то находишь минимальную в каждой группе и от текущего номера вычитаешь минимальный+1. Я специально дубовый пример с нумерацией привел, так как 1С это умеет. Когда не было нумерации в 1С соединяли таблицу саму с собой. То что возвращают оконные функции можно реализовывать в стандарте SQL-92. Долго, много писанины, плохая читабельность сути алгоритма, но можно.

Тут самое главное, это свойство функции AVG() не включать в расчет среднего значения NULL.

Есть и другие алгоритмы. Например, средний можно считать ручками как sum()/count() или sum()/sum() в сочетании с iif(<условие>, 1, 0).
sum(iif(<условие>, 1, 0)) as s1
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот