Добрый день! Есть такая проблема:
Дано:
Продукт Выручка
продукт1 500
продукт2 300
продукт3 400
Вопрос: как получить (путем вычисления выражения в текст. объекте) количество продуктов, у которых суммарная накопленная доля по выручке, например, будет меньше 70 % ... ? т.е. в данном случае ответ будет 2 шт.
Привет,
решение похожей задачи (http://qlikview-forum.ru/qvf/index.php/topic,413.msg600.html#msg600)
Скорее нет, чем да.
Вот как я понимаю... вот так можно каждый в отдельности продукт проверить по долям...
=sum(if(
Aggr( above ( Sum(Выручка)/Sum( total Выручка ), product_name)
<
sum(total Aggr(Sum(Выручка)/Sum( total Выручка), product_name)) * 0.7
, 1 , 0))
А как же накопление учесть... ???
Можно развёрнутее - что нужно найти?
Цитата: bibis от 31 июля 2015, 05:40:56
Можно развёрнутее - что нужно найти?
1. хотелось бы отсортировать по долям (убывание)
2. считать количество продуктов, пока сумма накопленных долей не достигнет 70%
Добрый день!
Я бы предложил на рассмотрение ABC анализ. Вот только с сортировкой немного помучиться надо будет.
По ограничению данных...в расчете % от выручке проставьте условие, если Выражение >0.7, тогда NULL(). Далее скрываем NULL() значения.
P.s.: Пример ABC - анализа во вложении.
Цитата: DmitryK от 03 августа 2015, 12:01:48
Я бы предложил на рассмотрение ABC анализ. Вот только с сортировкой немного помучиться надо будет.
По ограничению данных...в расчете % от выручке проставьте условие, если Выражение >0.7, тогда NULL(). Далее скрываем NULL() значения.
P.s.: Пример ABC - анализа во вложении.
Добрый день! Но все равно не ясно вот что... (Зайду с другой стороны):
Есть табличка типа:
Продукт Выручка Доля Накопл. Кол-во, где < 0.7
продукт1 500 42% 42% 1
продукт2 300 25% 67% 1
продукт3 400 33% 100% 0
Последний столбик - ставлю единицу по условию:
if(
rangesum(
Sum(Выручка )/Sum( total Выручка ),
above(
Sum(Выручка /Sum( total Выручка ) , 1 , RowNo()
)
)
< 0.7
, 1, 0 )
Видно, что сумма единиц и есть кол-во искомых товаров. Таблица делает все четко и правильно.
Но вот две проблемы: 1. Как же вывести в ТЕКСТОВЫЙ ОБЪЕКТ данное вычисление?! (ответ должен быть = 2 без учета сортировки)
2. И как же тогда учесть сортировку по долям ?! ( тогда ответ = 1 )
Спасибо огромное за внимание к моему вопросу!
Всем привет!
Евгений, есть уточняющий вопрос.
В данном примере 3 строки, в связи с этим вопрос.
В целом, одинаковая SQL-выборка в каждый момент времени может давать разную последовательность строк.
То есть, может быть "Продукт1 ---> Продукт2 ---> Продукт3", а может быть "Продукт1 ---> Продукт3 ---> Продукт2".
И это, в примере, только 3 строки. "В жизни" строк намного больше. И получается, что накопительная сумма может быть разная и число продуктов тоже может быть разное. Как быть в данной ситуации?
В моем примере, чтобы вывести значения, например, меньше 90% я в текстовом поле прописываю:
=sum(aggr(if(RANGESUM(ABOVE(SUM(SALE)/SUM(TOTAL SALE),1,RowNo()),SUM(SALE)/SUM(TOTAL SALE))<0.9,1,0),ITEM))
При этом у вас не настроена сортировка в таблице по выражению "Выручка". Вам ведь необходимо находить от мин. к макс.
Цитата: DmitryK от 03 августа 2015, 01:29:08
В моем примере, чтобы вывести значения, например, меньше 90% я в текстовом поле прописываю:
=sum(aggr(if(RANGESUM(ABOVE(SUM(SALE)/SUM(TOTAL SALE),1,RowNo()),SUM(SALE)/SUM(TOTAL SALE))<0.9,1,0),ITEM))
При этом у вас не настроена сортировка в таблице по выражению "Выручка". Вам ведь необходимо находить от мин. к макс.
Ну Вы представляете! Если использовать русский язык (Манго, Яблоко и т.д.) - то не работает ,а если product1, product2 - то работает.... что же в этом выражении такого, что оно русский не переваривает???
Только что перегрузил у себя, поменяв наименования в скрипте. Все ок!
См. вложение.
Но вообще, удивительные вещи творятся в стране, Товарищи! :-)
Цитата: DmitryK от 03 августа 2015, 04:21:03
Только что перегрузил у себя, поменяв наименования в скрипте. Все ок!
См. вложение.
Но вообще, удивительные вещи творятся в стране, Товарищи! :-)
Так странно... Жаль только не отсортировать по долям... Но все равно - ОГРОМНОЕ ВАМ СПАСИБО!
Не за что)
Цитата: Евгений от 03 августа 2015, 03:21:26
Цитата: DmitryK от 03 августа 2015, 01:29:08
В моем примере, чтобы вывести значения, например, меньше 90% я в текстовом поле прописываю:
=sum(aggr(if(RANGESUM(ABOVE(SUM(SALE)/SUM(TOTAL SALE),1,RowNo()),SUM(SALE)/SUM(TOTAL SALE))<0.9,1,0),ITEM))
При этом у вас не настроена сортировка в таблице по выражению "Выручка". Вам ведь необходимо находить от мин. к макс.
Ну Вы представляете! Если использовать русский язык (Манго, Яблоко и т.д.) - то не работает ,а если product1, product2 - то работает.... что же в этом выражении такого, что оно русский не переваривает???
Забавно.
А сколько языков установлено в системе?