Среднее не нулевых значений

отредактировано 03:55 Раздел: FastReport 3.0
Здравствуйте!
Такая проблема: при подсчете среднего функцией AVG сумма значений делится просто на количество строк, а мне нужно, что бы сумма делилась на кол - во не пустых строк. Как это сделать?
Заранее спасибо.

Комментарии

  • отредактировано 03:55
    Считайте в скрипте
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано December 2005
    scrutinizer написал:
    Здравствуйте!
    Такая проблема: при подсчете среднего функцией AVG сумма значений делится просто на количество строк, а мне нужно, что бы сумма делилась на кол - во не пустых строк. Как это сделать?
    Заранее спасибо.
    Сумму по полю делите на количество строк с непустым значением поля
    [SUM(<DataSet1."FieldName">, MasterData1) / SUM(IIF(<DataSet1."FieldName"> = nil,0,1), MasterData1)] 
    

    и в свойствах отчета установите EngineOptions.ConvertNulls=false.
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано 03:55
    написал:
    Считайте в скрипте
    В СУБД кстати так и происходит, при расчете среднего значения по полю учитываются только не NULL значения. Выходит очень нехорошо, когда разработчик запросом к БД получает одно среднее значение, а при расчете в FastReport - другое. Так что, наверное, все-таки стоит задуматься о введении доп. параметра в ф-ции AVG, в котором можно задавать метод подсчета - с учетом NULL или без учета NULL значений.
  • отредактировано 03:55
    EngineOptions.ConvertNulls установить False не помогает?
  • Andrew_ShAndrew_Sh г.Минск
    отредактировано December 2005
    Stranger написал:
    EngineOptions.ConvertNulls установить False не помогает?
    Само по себе отключение ConvertNulls абсолютно не помогает.
  • отредактировано 03:55
    Всем Спасчибо!
    Сделал вот так:
    [IIF(SUM(IIF(<RepUserDate."BreachExit"> = nil,0,1), MasterData1)=0,0,SUM(<RepUserDate."BreachExit">, MasterData1) / SUM(IIF(<RepUserDate."BreachExit"> = nil,0,1), MasterData1))]
    
    Но работает достачно медленно, возможно через скрипт будет быстрее.
  • отредактировано 03:55
    Поправил в исходниках.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.