Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Всем привет!
Столкнулся со следующей задачей - необходимо получить сумму всех продаж (факт Нетто), которые отличаются от среднего значения продажи не более чем на 3 сигмы, отличающиеся необходимо включить в сумму обрезав/дополнив до соответствующей границы коридора.
Отдельные поля со средним значением (avg), сигмой (stdev), верхней (avg+3stdev) и нижней (avg-3stdev) границами коридора, минимальным (min) и максимальным (max) значениями продажи считаются "на ура" для кода клиента и кода материала. А вот попытка в одном поле получить сумму по условию коридора продажи (с проверкой на попадание суммируемого значения в коридор) - не увенчиваются успехом. Либо Клик ругается на границу интервала в условии, либо просто ее игнорирует.
Следующая запись отображает коммент "Error in Expression":
=sum(if(Нетто > avg(Нетто)+3*Stdev(Нетто),
avg(Нетто)+3*Stdev(Нетто),
if(Нетто < avg(Нетто)-3*Stdev(Нетто),
avg(Нетто)-3*Stdev(Нетто),
Нетто
)
)
)
Добавление идентификатора total решает проблему ошибки в выражении, но не решает исходной задачи:
=sum(if(Нетто > avg(total Нетто)+3*Stdev(total Нетто),
avg(total Нетто)+3*Stdev(total Нетто),
if(Нетто < avg(total Нетто)-3*Stdev(total Нетто),
avg(total Нетто)-3*Stdev(total Нетто),
Нетто
)
)
)
Решение работает лишь для зафиксированного в selection клиента и материала (то есть для одной строки таблицы). При отсутствии выделения в каждой строке таблицы (для клиента и материала) отображаются полные суммы продаж.
Заранее благодарен за идеи.
С уважением,
Роман.
Егор,
нужно для каждой строки таблицы (то есть пары клиент/материал) получить свои границы (avg+/-3*stdev) и для каждой же пары учитывать при суммировании именно эти (свои) границы.
Переписка выше описывает решение только для нахождения единых границ по всей совокупности данных. То есть к каждой паре применяются единые (общие) границы, а нужны - частные.
С уважением,
Роман.
Нет, я как раз думаю, что границы рассчитываются на каждую строку отдельно aggr(nodistinct avg(Sales)+3*Stdev(Sales),ClientID,ProductCode) из за ClientID,ProductCode. У вас уже было время проверить мое последнее предоженное решение?
Егор,
большое спасибо за помощь!
Вариант с nodistinct действительно оказался верным. Теперь остается только прикрутить его к боевой модели (там несколько больше фактов ).
С уважением,
Роман.