Меры центральной тенденции (вычисление среднего) в запросе 1С

31.08.20

Разработка - Запросы

Меры центральной тенденции (вычисление среднего) в запросе 1С: * Среднее арифметическое * Среднее гармоническое * Среднее квадратическое * Среднее усеченное * Среднее винсоризованное * Медиана * Мода

При написании статьи использовались ссылки:

Как правильно вычислить среднее значение?

Меры центральной тенденции

Квадратный корень в запросе 1С

Как правильно вычислить среднее значение?

Средняя зарплата… Средняя продолжительность жизни… Практически каждый день мы с вами слышим эти словосочетания, используемые для описания множества одним единственным числом. Но как ни странно, «среднее значение» — достаточно коварное понятие, часто вводящее в заблуждение обычного, неискушенного в математической статистике, человека.

В чем проблема?

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

Давайте обратимся к классическому примеру со средней зарплатой.

В какой-то абстрактной компании работает десять сотрудников. Девять из них получают зарплату около 50 000 рублей, а один 1 500 000 рублей (по странному совпадению он же является генеральным директором этой компании).

Выборка зарплат

Средним значением в данном случае будет 195 150 рублей, что согласитесь, неправильно.

Какие способы вычисления среднего бывают?

  • Среднее арифметическое
  • Среднее гармоническое
  • Среднее квадратическое
  • Среднее усеченное
  • Среднее винсоризованное
  • Медиана
  • Мода

Перечисленные способы вычисления возможно реализовать на языке запросов 1С. Описание перечисленных и прочих способов вычисления среднего можно найти по ссылке Меры центральной тенденции.

И вот какие значения у нас получились:

Пример текста запроса

Текст запроса для вычисления различных вариантов среднего с числовыми данными из текста статьи (КлючеваяОперация: "Операция10"), его можно вставить в консоль запросов и выполнить:

  • временная таблица втЗамерыВремени - исходный массив числовых данных;
  • временная таблица втКлючевыеОперацииСтатистика - результат различных рассчетов среднего;
  • временные таблицы втЗамерыВремениПоВозрастанию и втКлючевыеОперацииАгрегаты - базовые данные для всех вариантов вычисления среднего;
  • временные таблицы в тексте запроса составлены так что бы различные варианты вычисления среднего были разделены и можно было понять и отделить нужный вариант;
  • вариант Среднее арифметическое результат аналогичен функции СРЕДНЕЕ();
  • вариант Среднее гармоническое вычисляется практически так же просто как и Среднее арифметическое;
  • вариант Среднее квадратическое использует вычисление из статьи Квадратный корень в запросе 1С;
  • варианты Среднее усеченное, Среднее винсоризованное и Медиана используют упорядоченный входной набор данных - временная таблица втЗамерыВремениПоВозрастанию, который имеет ограничение на количество строк втЗамерыВремени, для всех остальных вариантов можно обойтись временной таблицей втЗамерыВремени без ограничения количества строк;
  • вариант Мода может обработать входной набор данных отличный от числового;
  • варианты Среднее усеченное, Среднее винсоризованное позволяют получить усредненные значения минимума и максимума входного набора данных.
ВЫБРАТЬ
	"Операция10" КАК КлючеваяОперация,
	48000 КАК ВремяВыполнения
ПОМЕСТИТЬ втЗамерыВремени

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

ВЫБРАТЬ
	"Операция10",
	49000

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

ВЫБРАТЬ
	"Операция10",
	49500

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

ВЫБРАТЬ
	"Операция10",
	50000

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

ВЫБРАТЬ
	"Операция10",
	50000

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

ВЫБРАТЬ
	"Операция10",
	50500

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

ВЫБРАТЬ
	"Операция10",
	51000

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

ВЫБРАТЬ
	"Операция10",
	51500

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

ВЫБРАТЬ
	"Операция10",
	52000

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

ВЫБРАТЬ
	"Операция10",
	1500000

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

ВЫБРАТЬ
	"Операция5",
	98

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

ВЫБРАТЬ
	"Операция5",
	99

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

ВЫБРАТЬ
	"Операция5",
	100

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

ВЫБРАТЬ
	"Операция5",
	101

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

ВЫБРАТЬ
	"Операция5",
	102

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

ВЫБРАТЬ
	"Операция1",
	50
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1000000000
	АВТОНОМЕРЗАПИСИ() КАК НомерСтроки,
	втЗамерыВремени.КлючеваяОперация КАК КлючеваяОперация,
	втЗамерыВремени.ВремяВыполнения КАК ВремяВыполнения
ПОМЕСТИТЬ втЗамерыВремениПоВозрастанию
ИЗ
	втЗамерыВремени КАК втЗамерыВремени

УПОРЯДОЧИТЬ ПО
	втЗамерыВремени.КлючеваяОперация,
	втЗамерыВремени.ВремяВыполнения
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втЗамерыВремениПоВозрастанию.КлючеваяОперация КАК КлючеваяОперация,
	КОЛИЧЕСТВО(втЗамерыВремениПоВозрастанию.ВремяВыполнения) КАК КоличествоЗамеров,
	МИНИМУМ(втЗамерыВремениПоВозрастанию.ВремяВыполнения) КАК ВремяВыполненияМинимум,
	МАКСИМУМ(втЗамерыВремениПоВозрастанию.ВремяВыполнения) КАК ВремяВыполненияМаксимум,
	ВЫРАЗИТЬ(СРЕДНЕЕ(втЗамерыВремениПоВозрастанию.ВремяВыполнения) КАК ЧИСЛО(15, 3)) КАК ВремяВыполненияСреднее,
	СУММА(втЗамерыВремениПоВозрастанию.ВремяВыполнения) КАК ВремяВыполненияСумма,
	СУММА(1 / втЗамерыВремениПоВозрастанию.ВремяВыполнения) КАК ВремяВыполненияСуммаОбратная,
	СУММА(втЗамерыВремениПоВозрастанию.ВремяВыполнения * втЗамерыВремениПоВозрастанию.ВремяВыполнения) КАК ВремяВыполненияСуммаКвадратическая,
	МИНИМУМ(втЗамерыВремениПоВозрастанию.НомерСтроки) КАК НомерСтрокиМинимум,
	МАКСИМУМ(втЗамерыВремениПоВозрастанию.НомерСтроки) КАК НомерСтрокиМаксимум,
	(МАКСИМУМ(втЗамерыВремениПоВозрастанию.НомерСтроки) - МИНИМУМ(втЗамерыВремениПоВозрастанию.НомерСтроки)) / 2 КАК НомерСтрокиСередина,
	ВЫРАЗИТЬ((МАКСИМУМ(втЗамерыВремениПоВозрастанию.НомерСтроки) - МИНИМУМ(втЗамерыВремениПоВозрастанию.НомерСтроки)) / 2 КАК ЧИСЛО(10, 0)) КАК НомерСтрокиСерединаЦелое,
	ВЫРАЗИТЬ(КОЛИЧЕСТВО(втЗамерыВремениПоВозрастанию.ВремяВыполнения) / 100 * 10 КАК ЧИСЛО(10, 0)) КАК КоличествоУсечения
ПОМЕСТИТЬ втКлючевыеОперацииАгрегаты
ИЗ
	втЗамерыВремениПоВозрастанию КАК втЗамерыВремениПоВозрастанию

СГРУППИРОВАТЬ ПО
	втЗамерыВремениПоВозрастанию.КлючеваяОперация
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втКлючевыеОперацииАгрегаты.КлючеваяОперация КАК КлючеваяОперация,
	ВЫРАЗИТЬ(втКлючевыеОперацииАгрегаты.ВремяВыполненияСумма / втКлючевыеОперацииАгрегаты.КоличествоЗамеров КАК ЧИСЛО(15, 3)) КАК ВремяВыполненияСреднееАрифметическое,
	втКлючевыеОперацииАгрегаты.ВремяВыполненияСумма КАК ВремяВыполненияСумма,
	втКлючевыеОперацииАгрегаты.КоличествоЗамеров КАК КоличествоЗамеров
ПОМЕСТИТЬ втКлючевыеОперацииСреднееАрифметическое
ИЗ
	втКлючевыеОперацииАгрегаты КАК втКлючевыеОперацииАгрегаты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втКлючевыеОперацииАгрегаты.КлючеваяОперация КАК КлючеваяОперация,
	ВЫРАЗИТЬ(втКлючевыеОперацииАгрегаты.КоличествоЗамеров / втКлючевыеОперацииАгрегаты.ВремяВыполненияСуммаОбратная КАК ЧИСЛО(15, 3)) КАК ВремяВыполненияСреднееГармоническое,
	втКлючевыеОперацииАгрегаты.КоличествоЗамеров КАК КоличествоЗамеров,
	втКлючевыеОперацииАгрегаты.ВремяВыполненияСуммаОбратная КАК ВремяВыполненияСуммаОбратная
ПОМЕСТИТЬ втКлючевыеОперацииСреднееГармоническое
ИЗ
	втКлючевыеОперацииАгрегаты КАК втКлючевыеОперацииАгрегаты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втКлючевыеОперацииАгрегаты.КлючеваяОперация КАК КлючеваяОперация,
	втКлючевыеОперацииАгрегаты.ВремяВыполненияСуммаКвадратическая / втКлючевыеОперацииАгрегаты.КоличествоЗамеров КАК ВремяВыполненияСуммаКвадратическаяСредняя,
	втКлючевыеОперацииАгрегаты.ВремяВыполненияСуммаКвадратическая КАК ВремяВыполненияСуммаКвадратическая,
	втКлючевыеОперацииАгрегаты.КоличествоЗамеров КАК КоличествоЗамеров
ПОМЕСТИТЬ втКлючевыеОперацииКвадратическоеАгрегаты
ИЗ
	втКлючевыеОперацииАгрегаты КАК втКлючевыеОперацииАгрегаты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	SQRTS.КлючеваяОперация КАК КлючеваяОперация,
	ВЫРАЗИТЬ((((SQRTS.Y + SQRTS.X / SQRTS.Y) / 2 + SQRTS.X / ((SQRTS.Y + SQRTS.X / SQRTS.Y) / 2)) / 2 + SQRTS.X / (((SQRTS.Y + SQRTS.X / SQRTS.Y) / 2 + SQRTS.X / ((SQRTS.Y + SQRTS.X / SQRTS.Y) / 2)) / 2)) / 2 КАК ЧИСЛО(15, 3)) КАК ВремяВыполненияСреднееКвадратическое,
	SQRTS.X КАК ВремяВыполненияСуммаКвадратическаяСредняя
ПОМЕСТИТЬ втКлючевыеОперацииСреднееКвадратическое
ИЗ
	(ВЫБРАТЬ
		втКлючевыеОперацииКвадратическоеАгрегаты.КлючеваяОперация КАК КлючеваяОперация,
		втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя КАК X,
		ВЫБОР
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 0
				ТОГДА NULL
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 0.000001
				ТОГДА 0.0005623413251903491
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 0.00001
				ТОГДА 0.001778279410038923
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 0.0001
				ТОГДА 0.005623413251903491
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 0.001
				ТОГДА 0.01778279410038923
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 0.01
				ТОГДА 0.05623413251903491
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 0.1
				ТОГДА 0.1778279410038923
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 1
				ТОГДА 0.5623413251903491
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 10
				ТОГДА 1.778279410038923
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 100
				ТОГДА 5.623413251903491
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 1000
				ТОГДА 17.78279410038923
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 10000
				ТОГДА 56.23413251903491
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 100000
				ТОГДА 177.8279410038923
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 1000000
				ТОГДА 562.3413251903491
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 10000000
				ТОГДА 1778.279410038923
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 100000000
				ТОГДА 5623.413251903491
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 1000000000
				ТОГДА 17782.79410038923
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 10000000000
				ТОГДА 56234.13251903491
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 100000000000
				ТОГДА 177827.9410038923
			КОГДА втКлючевыеОперацииКвадратическоеАгрегаты.ВремяВыполненияСуммаКвадратическаяСредняя < 1000000000000
				ТОГДА 562341.3251903491
			ИНАЧЕ NULL
		КОНЕЦ КАК Y
	ИЗ
		втКлючевыеОперацииКвадратическоеАгрегаты КАК втКлючевыеОперацииКвадратическоеАгрегаты) КАК SQRTS
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втКлючевыеОперацииАгрегаты.КлючеваяОперация КАК КлючеваяОперация,
	ВЫБОР
		КОГДА втКлючевыеОперацииАгрегаты.НомерСтрокиСередина = втКлючевыеОперацииАгрегаты.НомерСтрокиСерединаЦелое
			ТОГДА втКлючевыеОперацииАгрегаты.НомерСтрокиМинимум + втКлючевыеОперацииАгрегаты.НомерСтрокиСередина
		ИНАЧЕ втКлючевыеОперацииАгрегаты.НомерСтрокиМинимум + втКлючевыеОперацииАгрегаты.НомерСтрокиСерединаЦелое - 1
	КОНЕЦ КАК НомерСтрокиСерединаНижняя,
	ВЫБОР
		КОГДА втКлючевыеОперацииАгрегаты.НомерСтрокиСередина = втКлючевыеОперацииАгрегаты.НомерСтрокиСерединаЦелое
			ТОГДА втКлючевыеОперацииАгрегаты.НомерСтрокиМинимум + втКлючевыеОперацииАгрегаты.НомерСтрокиСередина
		ИНАЧЕ втКлючевыеОперацииАгрегаты.НомерСтрокиМинимум + втКлючевыеОперацииАгрегаты.НомерСтрокиСерединаЦелое
	КОНЕЦ КАК НомерСтрокиСерединаВерхняя
ПОМЕСТИТЬ втКлючевыеОперацииМедианаАгрегаты
ИЗ
	втКлючевыеОперацииАгрегаты КАК втКлючевыеОперацииАгрегаты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втКлючевыеОперацииМедианаАгрегаты.КлючеваяОперация КАК КлючеваяОперация,
	ВЫРАЗИТЬ((втЗамерыВремениПоВозрастаниюНижняя.ВремяВыполнения + втЗамерыВремениПоВозрастаниюВерхняя.ВремяВыполнения) / 2 КАК ЧИСЛО(15, 3)) КАК ВремяВыполненияСреднееМедиана,
	втЗамерыВремениПоВозрастаниюНижняя.ВремяВыполнения КАК ВремяВыполненияСреднееНижнее,
	втЗамерыВремениПоВозрастаниюВерхняя.ВремяВыполнения КАК ВремяВыполненияСреднееВерхнее
ПОМЕСТИТЬ втКлючевыеОперацииСреднееМедиана
ИЗ
	втКлючевыеОперацииМедианаАгрегаты КАК втКлючевыеОперацииМедианаАгрегаты
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗамерыВремениПоВозрастанию КАК втЗамерыВремениПоВозрастаниюНижняя
		ПО втКлючевыеОперацииМедианаАгрегаты.КлючеваяОперация = втЗамерыВремениПоВозрастаниюНижняя.КлючеваяОперация
			И втКлючевыеОперацииМедианаАгрегаты.НомерСтрокиСерединаНижняя = втЗамерыВремениПоВозрастаниюНижняя.НомерСтроки
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗамерыВремениПоВозрастанию КАК втЗамерыВремениПоВозрастаниюВерхняя
		ПО втКлючевыеОперацииМедианаАгрегаты.КлючеваяОперация = втЗамерыВремениПоВозрастаниюВерхняя.КлючеваяОперация
			И втКлючевыеОперацииМедианаАгрегаты.НомерСтрокиСерединаВерхняя = втЗамерыВремениПоВозрастаниюВерхняя.НомерСтроки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втЗамерыВремениПоВозрастанию.КлючеваяОперация КАК КлючеваяОперация,
	втЗамерыВремениПоВозрастанию.ВремяВыполнения КАК ВремяВыполнения,
	КОЛИЧЕСТВО(втЗамерыВремениПоВозрастанию.ВремяВыполнения) КАК КоличествоЗамеров
ПОМЕСТИТЬ втЗамерыВремениМода
ИЗ
	втЗамерыВремениПоВозрастанию КАК втЗамерыВремениПоВозрастанию

СГРУППИРОВАТЬ ПО
	втЗамерыВремениПоВозрастанию.КлючеваяОперация,
	втЗамерыВремениПоВозрастанию.ВремяВыполнения
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втЗамерыВремениМода.КлючеваяОперация КАК КлючеваяОперация,
	МАКСИМУМ(втЗамерыВремениМода.КоличествоЗамеров) КАК КоличествоЗамеровМаксимум
ПОМЕСТИТЬ втКлючевыеОперацииМодаАгрегаты
ИЗ
	втЗамерыВремениМода КАК втЗамерыВремениМода

СГРУППИРОВАТЬ ПО
	втЗамерыВремениМода.КлючеваяОперация
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втЗамерыВремениМода.КлючеваяОперация КАК КлючеваяОперация,
	МИНИМУМ(втЗамерыВремениМода.ВремяВыполнения) КАК ВремяВыполненияСреднееМода,
	втКлючевыеОперацииМодаАгрегаты.КоличествоЗамеровМаксимум КАК КоличествоЗамеровМаксимум
ПОМЕСТИТЬ втКлючевыеОперацииСреднееМода
ИЗ
	втЗамерыВремениМода КАК втЗамерыВремениМода
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКлючевыеОперацииМодаАгрегаты КАК втКлючевыеОперацииМодаАгрегаты
		ПО втЗамерыВремениМода.КлючеваяОперация = втКлючевыеОперацииМодаАгрегаты.КлючеваяОперация
			И втЗамерыВремениМода.КоличествоЗамеров = втКлючевыеОперацииМодаАгрегаты.КоличествоЗамеровМаксимум

СГРУППИРОВАТЬ ПО
	втЗамерыВремениМода.КлючеваяОперация,
	втКлючевыеОперацииМодаАгрегаты.КоличествоЗамеровМаксимум
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втКлючевыеОперацииАгрегаты.КлючеваяОперация КАК КлючеваяОперация,
	втКлючевыеОперацииАгрегаты.КоличествоУсечения КАК КоличествоУсечения,
	втКлючевыеОперацииАгрегаты.НомерСтрокиМинимум + втКлючевыеОперацииАгрегаты.КоличествоУсечения КАК НомерСтрокиМинимумУсредненный,
	втКлючевыеОперацииАгрегаты.НомерСтрокиМаксимум - втКлючевыеОперацииАгрегаты.КоличествоУсечения КАК НомерСтрокиМаксимумУсредненный,
	втКлючевыеОперацииАгрегаты.КоличествоЗамеров КАК КоличествоЗамеров,
	втКлючевыеОперацииАгрегаты.КоличествоЗамеров - втКлючевыеОперацииАгрегаты.КоличествоУсечения * 2 КАК КоличествоЗамеровУсеченное
ПОМЕСТИТЬ втКлючевыеОперацииУсреднениеАгрегатыИсходные
ИЗ
	втКлючевыеОперацииАгрегаты КАК втКлючевыеОперацииАгрегаты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втЗамерыВремениПоВозрастанию.НомерСтроки КАК НомерСтроки,
	втЗамерыВремениПоВозрастанию.КлючеваяОперация КАК КлючеваяОперация,
	втЗамерыВремениПоВозрастанию.ВремяВыполнения КАК ВремяВыполнения,
	ВЫБОР
		КОГДА втЗамерыВремениПоВозрастанию.НомерСтроки < втКлючевыеОперацииУсреднениеАгрегатыИсходные.НомерСтрокиМинимумУсредненный
			ТОГДА 0
		КОГДА втЗамерыВремениПоВозрастанию.НомерСтроки > втКлючевыеОперацииУсреднениеАгрегатыИсходные.НомерСтрокиМаксимумУсредненный
			ТОГДА 0
		ИНАЧЕ втЗамерыВремениПоВозрастанию.ВремяВыполнения
	КОНЕЦ КАК ВремяВыполненияУсеченное,
	ВЫБОР
		КОГДА втЗамерыВремениПоВозрастанию.НомерСтроки < втКлючевыеОперацииУсреднениеАгрегатыИсходные.НомерСтрокиМинимумУсредненный
			ТОГДА втЗамерыВремениПоВозрастаниюМинимум.ВремяВыполнения
		КОГДА втЗамерыВремениПоВозрастанию.НомерСтроки > втКлючевыеОперацииУсреднениеАгрегатыИсходные.НомерСтрокиМаксимумУсредненный
			ТОГДА втЗамерыВремениПоВозрастаниюМаксимум.ВремяВыполнения
		ИНАЧЕ втЗамерыВремениПоВозрастанию.ВремяВыполнения
	КОНЕЦ КАК ВремяВыполненияВинсозированное
ПОМЕСТИТЬ втЗамерыВремениУсреднение
ИЗ
	втЗамерыВремениПоВозрастанию КАК втЗамерыВремениПоВозрастанию
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКлючевыеОперацииУсреднениеАгрегатыИсходные КАК втКлючевыеОперацииУсреднениеАгрегатыИсходные
		ПО втЗамерыВремениПоВозрастанию.КлючеваяОперация = втКлючевыеОперацииУсреднениеАгрегатыИсходные.КлючеваяОперация
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗамерыВремениПоВозрастанию КАК втЗамерыВремениПоВозрастаниюМинимум
		ПО втЗамерыВремениПоВозрастанию.КлючеваяОперация = втЗамерыВремениПоВозрастаниюМинимум.КлючеваяОперация
			И (втКлючевыеОперацииУсреднениеАгрегатыИсходные.НомерСтрокиМинимумУсредненный = втЗамерыВремениПоВозрастаниюМинимум.НомерСтроки)
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗамерыВремениПоВозрастанию КАК втЗамерыВремениПоВозрастаниюМаксимум
		ПО втЗамерыВремениПоВозрастанию.КлючеваяОперация = втЗамерыВремениПоВозрастаниюМаксимум.КлючеваяОперация
			И (втКлючевыеОперацииУсреднениеАгрегатыИсходные.НомерСтрокиМаксимумУсредненный = втЗамерыВремениПоВозрастаниюМаксимум.НомерСтроки)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втЗамерыВремениУсреднение.КлючеваяОперация КАК КлючеваяОперация,
	МИНИМУМ(втЗамерыВремениУсреднение.ВремяВыполненияВинсозированное) КАК ВремяВыполненияМинимумУсредненный,
	МАКСИМУМ(втЗамерыВремениУсреднение.ВремяВыполненияВинсозированное) КАК ВремяВыполненияМаксимумУсредненный,
	СУММА(втЗамерыВремениУсреднение.ВремяВыполненияУсеченное) КАК ВремяВыполненияСуммаУсеченная,
	СУММА(втЗамерыВремениУсреднение.ВремяВыполненияВинсозированное) КАК ВремяВыполненияСуммаВинсозированная,
	МАКСИМУМ(втКлючевыеОперацииУсреднениеАгрегатыИсходные.КоличествоЗамеров) КАК КоличествоЗамеров,
	МАКСИМУМ(втКлючевыеОперацииУсреднениеАгрегатыИсходные.КоличествоЗамеровУсеченное) КАК КоличествоЗамеровУсеченное
ПОМЕСТИТЬ втКлючевыеОперацииУсреднениеАгрегаты
ИЗ
	втЗамерыВремениУсреднение КАК втЗамерыВремениУсреднение
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКлючевыеОперацииУсреднениеАгрегатыИсходные КАК втКлючевыеОперацииУсреднениеАгрегатыИсходные
		ПО втЗамерыВремениУсреднение.КлючеваяОперация = втКлючевыеОперацииУсреднениеАгрегатыИсходные.КлючеваяОперация

СГРУППИРОВАТЬ ПО
	втЗамерыВремениУсреднение.КлючеваяОперация
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втКлючевыеОперацииУсреднениеАгрегаты.КлючеваяОперация КАК КлючеваяОперация,
	ВЫРАЗИТЬ(втКлючевыеОперацииУсреднениеАгрегаты.ВремяВыполненияСуммаУсеченная / втКлючевыеОперацииУсреднениеАгрегаты.КоличествоЗамеровУсеченное КАК ЧИСЛО(15, 3)) КАК ВремяВыполненияСреднееУсеченное,
	втКлючевыеОперацииУсреднениеАгрегаты.ВремяВыполненияСуммаУсеченная КАК ВремяВыполненияСуммаУсеченная,
	втКлючевыеОперацииУсреднениеАгрегаты.КоличествоЗамеровУсеченное КАК КоличествоЗамеровУсеченное
ПОМЕСТИТЬ втКлючевыеОперацииСреднееУсеченное
ИЗ
	втКлючевыеОперацииУсреднениеАгрегаты КАК втКлючевыеОперацииУсреднениеАгрегаты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втКлючевыеОперацииУсреднениеАгрегаты.КлючеваяОперация КАК КлючеваяОперация,
	ВЫРАЗИТЬ(втКлючевыеОперацииУсреднениеАгрегаты.ВремяВыполненияСуммаВинсозированная / втКлючевыеОперацииУсреднениеАгрегаты.КоличествоЗамеров КАК ЧИСЛО(15, 3)) КАК ВремяВыполненияСреднееВинсозированное,
	втКлючевыеОперацииУсреднениеАгрегаты.ВремяВыполненияСуммаВинсозированная КАК ВремяВыполненияСуммаВинсозированная,
	втКлючевыеОперацииУсреднениеАгрегаты.КоличествоЗамеров КАК КоличествоЗамеров
ПОМЕСТИТЬ втКлючевыеОперацииСреднееВинсозированное
ИЗ
	втКлючевыеОперацииУсреднениеАгрегаты КАК втКлючевыеОперацииУсреднениеАгрегаты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	втКлючевыеОперацииАгрегаты.КлючеваяОперация КАК КлючеваяОперация,
	втКлючевыеОперацииАгрегаты.КоличествоЗамеров КАК КоличествоЗамеров,
	втКлючевыеОперацииАгрегаты.ВремяВыполненияМинимум КАК ВремяВыполненияМинимум,
	втКлючевыеОперацииУсреднениеАгрегаты.ВремяВыполненияМинимумУсредненный КАК ВремяВыполненияМинимумУсредненный,
	втКлючевыеОперацииАгрегаты.ВремяВыполненияМаксимум КАК ВремяВыполненияМаксимум,
	втКлючевыеОперацииУсреднениеАгрегаты.ВремяВыполненияМаксимумУсредненный КАК ВремяВыполненияМаксимумУсредненный,
	втКлючевыеОперацииАгрегаты.ВремяВыполненияСреднее КАК ВремяВыполненияСреднее,
	втКлючевыеОперацииСреднееАрифметическое.ВремяВыполненияСреднееАрифметическое КАК ВремяВыполненияСреднееАрифметическое,
	втКлючевыеОперацииСреднееГармоническое.ВремяВыполненияСреднееГармоническое КАК ВремяВыполненияСреднееГармоническое,
	втКлючевыеОперацииСреднееКвадратическое.ВремяВыполненияСреднееКвадратическое КАК ВремяВыполненияСреднееКвадратическое,
	втКлючевыеОперацииСреднееМедиана.ВремяВыполненияСреднееМедиана КАК ВремяВыполненияСреднееМедиана,
	втКлючевыеОперацииСреднееМода.ВремяВыполненияСреднееМода КАК ВремяВыполненияСреднееМода,
	втКлючевыеОперацииСреднееУсеченное.ВремяВыполненияСреднееУсеченное КАК ВремяВыполненияСреднееУсеченное,
	втКлючевыеОперацииСреднееВинсозированное.ВремяВыполненияСреднееВинсозированное КАК ВремяВыполненияСреднееВинсозированное
ПОМЕСТИТЬ втКлючевыеОперацииСтатистика
ИЗ
	втКлючевыеОперацииАгрегаты КАК втКлючевыеОперацииАгрегаты
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКлючевыеОперацииСреднееАрифметическое КАК втКлючевыеОперацииСреднееАрифметическое
		ПО втКлючевыеОперацииАгрегаты.КлючеваяОперация = втКлючевыеОперацииСреднееАрифметическое.КлючеваяОперация
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКлючевыеОперацииСреднееГармоническое КАК втКлючевыеОперацииСреднееГармоническое
		ПО втКлючевыеОперацииАгрегаты.КлючеваяОперация = втКлючевыеОперацииСреднееГармоническое.КлючеваяОперация
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКлючевыеОперацииСреднееКвадратическое КАК втКлючевыеОперацииСреднееКвадратическое
		ПО втКлючевыеОперацииАгрегаты.КлючеваяОперация = втКлючевыеОперацииСреднееКвадратическое.КлючеваяОперация
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКлючевыеОперацииСреднееМедиана КАК втКлючевыеОперацииСреднееМедиана
		ПО втКлючевыеОперацииАгрегаты.КлючеваяОперация = втКлючевыеОперацииСреднееМедиана.КлючеваяОперация
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКлючевыеОперацииСреднееМода КАК втКлючевыеОперацииСреднееМода
		ПО втКлючевыеОперацииАгрегаты.КлючеваяОперация = втКлючевыеОперацииСреднееМода.КлючеваяОперация
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКлючевыеОперацииУсреднениеАгрегаты КАК втКлючевыеОперацииУсреднениеАгрегаты
		ПО втКлючевыеОперацииАгрегаты.КлючеваяОперация = втКлючевыеОперацииУсреднениеАгрегаты.КлючеваяОперация
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКлючевыеОперацииСреднееУсеченное КАК втКлючевыеОперацииСреднееУсеченное
		ПО втКлючевыеОперацииАгрегаты.КлючеваяОперация = втКлючевыеОперацииСреднееУсеченное.КлючеваяОперация
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втКлючевыеОперацииСреднееВинсозированное КАК втКлючевыеОперацииСреднееВинсозированное
		ПО втКлючевыеОперацииАгрегаты.КлючеваяОперация = втКлючевыеОперацииСреднееВинсозированное.КлючеваяОперация

 

Меры центральной тенденции (вычисление среднего) в запросе

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    125050    683    389    

732

Пропорциональное распределение в запросе с использованием АвтоНомерЗаписи()

Запросы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Часто поступают задачи по произвольному распределению общих сумм. После распределения иногда пропадают копейки. Суть решения добавить АвтоНомерЗаписи() в ВТ распределения, и далее используя функции МАКСИМУМ или МИНИМУМ можем положить разницу копеек в первую или последнюю строку знаменателя распределения.

11.04.2024    2264    andrey_sag    10    

28

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    6015    KawaNoNeko    23    

25

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2155    2    Yashazz    0    

31

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6650    31    mkalimulin    27    

52

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    1886    vandalsvq    7    

29

Объектная модель запроса "Схема запроса" 2

Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5631    user1923546    26    

46

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16608    skovpin_sa    14    

101
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Eremkin 03.09.20 08:28 Сейчас в теме
За исследование и работу однозначно плюс. Это даже не оспаривается. Но объясните мне зачем такие вычисления в запросе? Зачем грузить СУБД? Или может я чего-то не понимаю?
2. parcan 66 03.09.20 12:33 Сейчас в теме
(1) Если вам нужно посчитать один массив данных, то ни к чему.
4. Eremkin 03.09.20 13:06 Сейчас в теме
(2) А если большой объем данных?
5. parcan 66 03.09.20 16:45 Сейчас в теме
(4) То запросом все быстро обсчитается, там простая математика.
3. aspirator23 339 03.09.20 13:01 Сейчас в теме
В качестве эксперта сюда бы Ильдаровича.
6. AnatolPopov 167 15.09.20 19:27 Сейчас в теме
Исходные данные неверны ;) Набиуллина не может так мало получать ;)))
7. пользователь 20.03.23 11:00
Сообщение было скрыто модератором.
...
Оставьте свое сообщение