Расчет среднего в запросе

Печать (Ctrl+P)

В этой статьи я хочу показать способ исключения нулевых значений при вычислении среднего арифметического в итогах запроса.  Среднего арифметическое в итогах запроса является суммой всех значений, деленной на их количество по формуле:.

  • x – среднее арифметическое;
  • x– конкретное значение;
  • n – количество значений.

Однако, бывают случаи, когда нужно исключить нулевые значения из вычисления среднего арифметического. Для этого нужно возвращать значение Null вместо нулевого значения. Платформа 1С исключает значения в расчете среднего и при этом ошибка в запрсе не возникает.

Например, допустим есть таблица товаров, которая имеет два значения цены : 10 и 0 . Среднее арифметическое будет 5, однако если мы хотим, чтобы было 10 нужно исключить значение 0 из рассмотрения. Такой результат продемонстрирует следующий простой фрагмент текста запроса

    Запрос.Текст = "ВЫБРАТЬ
    |    Товары.Товар КАК Товар,
    |    ВЫБОР
    |        КОГДА Товары.Цена = 0
    |            ТОГДА NULL
    |        ИНАЧЕ Товары.Цена
    |    КОНЕЦ КАК Цена
    |ИЗ
    |    Товары КАК Товары
    |ИТОГИ
    |    СРЕДНЕЕ(Цена)
    |ПО
    |    Товар";

Все нулевые значения исключаются при расчете СРЕДНЕЕ(Цена) влагодаря конструкции в области выбранных полей запроса:

ВЫБОР КОГДА Товары.Цена = 0 ТОГДА NULL  ИНАЧЕ Товары.Цена КОНЕЦ

На практике данный случай имеет место, когда в запросе строится левое соединение двух таблиц. Следедуюшая конструкция в области выбранных полей запроса :

ЕстьNull( ПраваяТаблица.Цена, 0)

выключает несущестуючих записей правой таблицы в качестве нулевого значения при вычислении среднего . Следовательно, если мы хотим, чтобы эти неуществующие не участвовали при вычислении среднего нельзя использовать оператор ЕстьNull

Previous Article

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.