Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 21, 2017, 07:20:51 am

Автор Тема: Суммирование значений по условиям, вычисляемым по выборке значений  (Прочитано 1171 раз)

Оффлайн Роман

  • Новичок
  • *
  • Сообщений: 4
  • Страна: ru
  • Рейтинг: +2/-0
    • Просмотр профиля
Всем доброго времени суток!

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

Суть - есть выборка значений. Из нее необходимо найти среднее (avg), стандартное отклонение (stdev), после чего суммировать все значения выборки по следующему правилу:

- если значение выборки менее avg-3*stdev - в сумму идет avg-3*stdev;
- если значение выборки находится в промежутке от avg-3*stdev до avg+3*stdev - в сумму идет само значение;
- если значение выборки превышает avg+3*stdev - в сумму идет avg+3*stdev;

То есть сумма с "урезанием" по нормальному коридору.

Суммирование провожу по клиенту и коду материала, за период (месяц) может быть не одна продажа (пример данных и моделька - приложены). 

Среднее по паре клиент-товар считает "на  Ура!", стандартное отклонение и границы интервала/коридора - тоже. А вот если попытаться подставить границы интервала в условие суммирования - неудача: Клик сообщает об ошибке. Спецификатор total убирает сообщение об ошибке, но не решает исходную задачу (так как в этом случае "не видит" границ коридора по паре клиент/SKU). То есть если выбрать (в Selection) одного клиента и один товар, то все считается корректно, нужно же таблицу из всех клиентов и всех SKU. ))

Заранее благодарен за идеи.

С уважением,
Роман.

Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
добрый день. Почитайте про функцию aggr , и думаю всё станет понятно. Если что распишу подробнее позже.

Оффлайн Роман

  • Новичок
  • *
  • Сообщений: 4
  • Страна: ru
  • Рейтинг: +2/-0
    • Просмотр профиля
Про aggr читал. Про функцию и аналог группировки в SQL по GROUP BY знаю. И пример из распространенного документа с вычислением топов свыше 80% и не топов ниже 50% тоже видел.

Только в примере max и проценты по генеральной совокупности считаются (и условия со спецификатором total), а мне нужно решить задачу для каждой строки в таблице на уровне клиент/материал, где в общем случае не зафиксированы какие-либо множества значений клиента и материала.

Неофициальный форум пользователей QlikView & Qlik Sense