Вопрос по функции Среднее в запросе

1. Drizer2000 14 29.10.11 23:33 Сейчас в теме
Есть задачка,нужно рассчитать среднюю цену на разных этапах обработки ягоды.
Ягода проходит следующие этапы:
1. Закупка от поставщика
2. Заморозка (при заморозке масса ягоды уменьшается)
3. Очистка от мусора (образуются готовая продукция,сортекс и мусор)
Для расчета цены не используем дополнительных расходов на обработку ягод, учитываем только начальную стоимость ягод от поставщика.
Хочу сделать эту задачу через запросы,но не очень получается. Хочу сделать без дополнительных выгрузок в табличную часть и их дальнейшей обработки.
Делаю отчет через консоль запросов.
Вопросы по отчету:
Как уменьшить отчет, чтобы сгруппировать ягоды по ценам на разных стадиях.
Стадии обозначаются параметрами склад, склад1. Хочу уменьшить, т.к. стадий больше чем две - это получается еще пару таких таблиц придется объединять.
Но самая главная заморочка в такой реализации - это использование среднего, среднее считается в зависимости от количества позиций по которым собирается цена, и учитываются даже те позиции, которые равны нулю, что приводит совсем к неправильному результату. Как можно извратится так, чтобы подсчитать среднее без учета нулевых значений таблиц.
ВЫБРАТЬ
	ВложенныеТаблицы.Ягода,
	ВложенныеТаблицы.ПартияКачество,
	СРЕДНЕЕ(ВложенныеТаблицы.ЦенаСырья) КАК ЦенаСырья,
	СРЕДНЕЕ(ВложенныеТаблицы.ЦенаПродукции) КАК ЦенаПродукции
ИЗ
	(ВЫБРАТЬ
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Владелец КАК Ягода,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад КАК ПартияСклад,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Качество КАК ПартияКачество,
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараНачальныйОстаток) КАК МассаТовараНачальныйОстаток,
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараПриход) КАК МассаТовараПриход, 		
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаНачальныйОстаток) КАК СуммаНачальныйОстаток,
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаПриход) КАК СуммаПриход,
		0 КАК ЦенаПродукции,
		СРЕДНЕЕ((ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаНачальныйОстаток + ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаПриход) / 
		(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараНачальныйОстаток + ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараПриход)) 
		КАК ЦенаСырья
	ИЗ
		РегистрНакопления.ТоварыНаСкладеПоСтоимости.ОстаткиИОбороты КАК ТоварыНаСкладеПоСтоимостиОстаткиИОбороты
	ГДЕ
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад = &Склад
	
	СГРУППИРОВАТЬ ПО
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Владелец,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Качество
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Владелец,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Качество,
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараНачальныйОстаток),
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараПриход),
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаНачальныйОстаток),
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаПриход),
		СРЕДНЕЕ((ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаНачальныйОстаток + ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаПриход) / 
		(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараНачальныйОстаток + ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараПриход)),
		0
	ИЗ
		РегистрНакопления.ТоварыНаСкладеПоСтоимости.ОстаткиИОбороты КАК ТоварыНаСкладеПоСтоимостиОстаткиИОбороты
	ГДЕ
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад = &Склад1
	
	СГРУППИРОВАТЬ ПО
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Владелец,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Качество) КАК ВложенныеТаблицы

СГРУППИРОВАТЬ ПО
	ВложенныеТаблицы.Ягода,
	ВложенныеТаблицы.ПартияКачество
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. пользователь 30.10.11 01:53
Сообщение было скрыто модератором.
...
3. Drizer2000 14 30.10.11 03:12 Сейчас в теме
(2) bypass, спасибо за идею, переделал отчет. Только для расчета среднего, если сумма была равна нулю, я ставлю Null и в итоге эта позиция в расчет не включается. Теперь гораздо правильнее идет расчет.
ВЫБРАТЬ
	ВложенныеТаблицы.Ягода,
	//ВложенныеТаблицы.ПартияКачество,
	СРЕДНЕЕ(ВложенныеТаблицы.ЦенаСырья) КАК ЦенаСырья,
	СРЕДНЕЕ(ВложенныеТаблицы.ЦенаПродукции) КАК ЦенаПродукции,
	СРЕДНЕЕ(ВложенныеТаблицы.ЦенаВеяннойЯгоды) КАК ЦенаВеяннойЯгоды
ИЗ
	(ВЫБРАТЬ
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Владелец КАК Ягода,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад КАК ПартияСклад,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Качество КАК ПартияКачество,
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараНачальныйОстаток) КАК МассаТовараНачальныйОстаток,
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараПриход) КАК МассаТовараПриход, 		
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаНачальныйОстаток) КАК СуммаНачальныйОстаток,
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаПриход) КАК СуммаПриход,
		Null КАК ЦенаВеяннойЯгоды,
		Null КАК ЦенаПродукции,
		СРЕДНЕЕ(Выбор Когда (СуммаНачальныйОстаток + СуммаПриход)=0 или (МассаТовараНачальныйОстаток + МассаТовараПриход)=0 ТОГДА 
		Null 
		ИНАЧЕ(СуммаНачальныйОстаток + СуммаПриход) /(МассаТовараНачальныйОстаток + МассаТовараПриход) 
		КОНЕЦ) 
		КАК ЦенаСырья
	ИЗ
		РегистрНакопления.ТоварыНаСкладеПоСтоимости.ОстаткиИОбороты КАК ТоварыНаСкладеПоСтоимостиОстаткиИОбороты
	ГДЕ
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад = &Склад
	
	СГРУППИРОВАТЬ ПО
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Владелец,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Качество
	
	ОБЪЕДИНИТЬ 
	
	ВЫБРАТЬ
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Владелец,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Качество,
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараНачальныйОстаток),
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараПриход),
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаНачальныйОстаток),
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаПриход),
		Null,
		СРЕДНЕЕ(Выбор Когда (СуммаНачальныйОстаток + СуммаПриход)=0 или (МассаТовараНачальныйОстаток + МассаТовараПриход)=0 ТОГДА 
		Null 
		ИНАЧЕ(СуммаНачальныйОстаток + СуммаПриход) /(МассаТовараНачальныйОстаток + МассаТовараПриход) 
		КОНЕЦ),
		Null
	ИЗ
		РегистрНакопления.ТоварыНаСкладеПоСтоимости.ОстаткиИОбороты КАК ТоварыНаСкладеПоСтоимостиОстаткиИОбороты
	ГДЕ
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад = &Склад1
	    или ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад = &Склад3
	СГРУППИРОВАТЬ ПО
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Владелец,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Качество
	ОБЪЕДИНИТЬ 
	
	ВЫБРАТЬ
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Владелец,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Качество,
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараНачальныйОстаток),
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.МассаТовараПриход),
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаНачальныйОстаток),
		СУММА(ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.СуммаПриход),
		СРЕДНЕЕ(Выбор Когда (СуммаНачальныйОстаток + СуммаПриход)=0 или (МассаТовараНачальныйОстаток + МассаТовараПриход)=0 ТОГДА 
		Null 
		ИНАЧЕ(СуммаНачальныйОстаток + СуммаПриход) /(МассаТовараНачальныйОстаток + МассаТовараПриход) 
		КОНЕЦ),
		Null,
		Null
	ИЗ
		РегистрНакопления.ТоварыНаСкладеПоСтоимости.ОстаткиИОбороты КАК ТоварыНаСкладеПоСтоимостиОстаткиИОбороты
	ГДЕ
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад = &Склад2
	
	СГРУППИРОВАТЬ ПО
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Владелец,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Склад,
		ТоварыНаСкладеПоСтоимостиОстаткиИОбороты.Партия.Качество) КАК ВложенныеТаблицы
		
СГРУППИРОВАТЬ ПО
	ВложенныеТаблицы.Ягода
	//ВложенныеТаблицы.ПартияКачество
Показать
4. nofx 25.08.16 16:15 Сейчас в теме
ПроцессорВыводаКомпоновкиДанныхВКоллекциюЗначенийИмениБориса­Нуралиева
SuhoffGV; +1 Ответить
5. lefthander 26.08.16 00:24 Сейчас в теме
Археологам большой привет ;)
6. nofx 21.05.23 23:01 Сейчас в теме
Оставьте свое сообщение

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