Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Апрель 27, 2018, 03:47:10 am

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

Оффлайн Евгений

  • Новичок
  • *
  • Сообщений: 25
  • Рейтинг: +2/-0
    • Просмотр профиля
Добрый день! Есть такая проблема:

Дано:

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

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

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1096
  • Страна: ru
  • Рейтинг: +112/-0
    • Просмотр профиля

Оффлайн Евгений

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

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

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

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


Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Можно развёрнутее - что нужно найти?

Оффлайн Евгений

  • Новичок
  • *
  • Сообщений: 25
  • Рейтинг: +2/-0
    • Просмотр профиля
Можно развёрнутее - что нужно найти?

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

Оффлайн DmitryK

  • Наставник
  • **
  • Сообщений: 63
  • Страна: ru
  • Рейтинг: +20/-0
  • QlikView v.11.20
    • Просмотр профиля
Добрый день!

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

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

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

Оффлайн Евгений

  • Новичок
  • *
  • Сообщений: 25
  • Рейтинг: +2/-0
    • Просмотр профиля

Я бы предложил на рассмотрение 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 )

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

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


Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Всем привет!
Евгений, есть уточняющий вопрос.
В данном примере 3 строки, в связи с этим вопрос.

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

Оффлайн DmitryK

  • Наставник
  • **
  • Сообщений: 63
  • Страна: ru
  • Рейтинг: +20/-0
  • QlikView v.11.20
    • Просмотр профиля
В моем примере, чтобы вывести значения, например, меньше 90% я в текстовом поле прописываю:

=sum(aggr(if(RANGESUM(ABOVE(SUM(SALE)/SUM(TOTAL SALE),1,RowNo()),SUM(SALE)/SUM(TOTAL SALE))<0.9,1,0),ITEM))

При этом у вас не настроена сортировка в таблице по выражению "Выручка". Вам ведь необходимо находить от мин. к макс.

Оффлайн Евгений

  • Новичок
  • *
  • Сообщений: 25
  • Рейтинг: +2/-0
    • Просмотр профиля
В моем примере, чтобы вывести значения, например, меньше 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

  • Наставник
  • **
  • Сообщений: 63
  • Страна: ru
  • Рейтинг: +20/-0
  • QlikView v.11.20
    • Просмотр профиля
Только что перегрузил у себя, поменяв наименования в скрипте. Все ок!
См. вложение.

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

Оффлайн Евгений

  • Новичок
  • *
  • Сообщений: 25
  • Рейтинг: +2/-0
    • Просмотр профиля
Только что перегрузил у себя, поменяв наименования в скрипте. Все ок!
См. вложение.

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

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

Оффлайн DmitryK

  • Наставник
  • **
  • Сообщений: 63
  • Страна: ru
  • Рейтинг: +20/-0
  • QlikView v.11.20
    • Просмотр профиля
Не за что)

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1096
  • Страна: ru
  • Рейтинг: +112/-0
    • Просмотр профиля
В моем примере, чтобы вывести значения, например, меньше 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 - то работает.... что же в этом выражении такого, что оно русский не переваривает???
Забавно.
А сколько языков установлено в системе?