Подсчет кол-ва в зависимости от накопленной доли (QV)

Автор Евгений, 31 июля 2015, 04:10:34

« назад - далее »

Евгений

Добрый день! Есть такая проблема:

Дано:

  Продукт   Выручка 
продукт1    500     
продукт2    300     
продукт3    400   

Вопрос:  как получить (путем вычисления выражения в текст. объекте) количество продуктов, у которых суммарная накопленная доля по выручке, например,  будет меньше 70 % ... ?  т.е. в данном случае ответ будет 2 шт.


Евгений

Скорее нет, чем да.

Вот как я понимаю... вот так можно каждый в отдельности продукт проверить по долям...
=sum(if(
Aggr( above ( Sum(Выручка)/Sum( total Выручка ), product_name)
<
sum(total Aggr(Sum(Выручка)/Sum( total Выручка), product_name)) * 0.7
, 1 , 0))


А как же накопление учесть... ???

bibis

#3
Можно развёрнутее - что нужно найти?

Евгений

#4
Цитата: bibis от 31 июля  2015, 05:40:56  
Можно развёрнутее - что нужно найти?

1. хотелось бы отсортировать по долям (убывание)
2. считать количество продуктов, пока сумма накопленных долей не достигнет 70%

DmitryK

#5
Добрый день!

Я бы предложил на рассмотрение ABC анализ. Вот только с сортировкой немного помучиться надо будет.

По ограничению данных...в расчете % от выручке проставьте условие, если Выражение >0.7, тогда NULL(). Далее скрываем NULL() значения.

P.s.: Пример ABC - анализа во вложении.

Евгений

#6
Цитата: 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 )

Спасибо огромное за внимание к моему вопросу!

kvv

Всем привет!
Евгений, есть уточняющий вопрос.
В данном примере 3 строки, в связи с этим вопрос.

В целом, одинаковая SQL-выборка в каждый момент времени может давать разную последовательность строк.
То есть, может быть "Продукт1 ---> Продукт2 ---> Продукт3", а может быть "Продукт1 ---> Продукт3 ---> Продукт2".
И это, в примере, только 3 строки. "В жизни" строк намного больше. И получается, что накопительная сумма может быть разная и число продуктов тоже может быть разное. Как быть в данной ситуации?

DmitryK

В моем примере, чтобы вывести значения, например, меньше 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

Только что перегрузил у себя, поменяв наименования в скрипте. Все ок!
См. вложение.

Но вообще, удивительные вещи творятся в стране, Товарищи! :-)

Евгений

Цитата: DmitryK от 03 августа  2015, 04:21:03  
Только что перегрузил у себя, поменяв наименования в скрипте. Все ок!
См. вложение.

Но вообще, удивительные вещи творятся в стране, Товарищи! :-)

Так странно... Жаль только не отсортировать по долям... Но все равно - ОГРОМНОЕ ВАМ СПАСИБО!

DmitryK


admin

Цитата: Евгений от 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 - то работает.... что же в этом выражении такого, что оно русский не переваривает???
Забавно.
А сколько языков установлено в системе?

Яндекс.Метрика