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

Печать (Ctrl+P)

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

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

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

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

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

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

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

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

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

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

Previous Article
Next Article

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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