10 Replies Latest reply: Sep 29, 2017 8:58 AM by Vsevolod Khassanov RSS

    Как посчитать долю?

    Vasiliy Beshentsev

      Добрый день, кликеры!

      Столкнулся вроде с элементарной задачей, но не понимаю как правильно написать в синтаксисе.

      Необходимо посчитать долю суммы от общей суммы (по всем строкам).

      Но клик отказывается выводить для каждого агента общую сумму по всем агентам, чтобы посчитать долю.

      Есть всё-таки способ как вывести общую сумму напротив каждого агента?

        • Re: Как посчитать долю?
          Vasiliy Beshentsev

          Есть решение, но оно не кликовое - считать в доп поле итоговую сумму через over partition by, и потом я получаю долю по каждому агенту от общей суммы. Но, возможно, есть другое решение уже в самом клике?

          • Re: Как посчитать долю?
            Eugeny Ilyin
            Привет, используйте Total с полями, примерно так: sum( total <Агент> Сумма)
              • Re: Как посчитать долю?
                Vasiliy Beshentsev

                Я попробовал уже и через aggr и через total - это не то. Он показывает правильную итоговую сумму до тех пор, пока не сделаешь фильтр по конкретным агентам, после этого он уже высчитывает тотал не по всем строкам, а по отфильтрованным агентам. Хотелось, чтобы итоговая сумма сохранялась независимо от фильтра.

                Есть такой вариант - SUM({1}Денюжки). Однако, в этом случае вылезает уже другая проблема, независимо от фильтра в таблице отображаются все строки.

              • Re: Как посчитать долю?
                Светлана Зорихина

                Добрый день!

                Попробуйте вычислить общую сумму на уровне скрипта, а потом используйте в выражении в таблице.

                  • Re: Как посчитать долю?
                    Vasiliy Beshentsev

                    Светлана, добрый день!

                    Это решение я уже описал во втором посте. Это даже ещё более гибкое решение, нежели вычислять на уровне скрипта qlik.

                    Но всё же интересно, как это можно реализовать в выражении непосредственно уже в таблице...

                      • Re: Как посчитать долю?
                        Eugeny Ilyin

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

                          • Re: Как посчитать долю?
                            Vasiliy Beshentsev

                            2017-09-26 09_15_36-Qlik Sense Desktop.png

                            Ещё раз - какая идея? Чтобы корректно рассчитать долю каждого агента от общей суммы за год, мне необходимо поделить сумму каждого агента на итоговую сумму всех сумм всех агентов (не обращаем внимание что написано за год, там вся выгрузка только за 17 год ).

                            Пока есть решение, которое полностью удовлетворяет такому расчёту это посчитать для каждого агента эту сумму через over непосредственно в запросе к бд.

                            2017-09-26 10_03_35-ITSUP-32377.sql - SQLPRDSPB02_SQLPRDSPB02.master (INTERNAL_R13 - __Удаленное.png

                             

                            ps: выбрано только 4 агента из нескольких тысяч, чтобы доля не смущала)

                      • Re: Как посчитать долю?
                        Светлана Зорихина

                        Попробовала так, у меня получилось.

                        Сначала создаем переменную (считаем итоговую сумму за Период) с выражением:

                        Aggr( SUM({1}Денюжки),Период)

                        Потом используем её в выражении вместо итоговой суммы, в таком случае она не меняется в зависимости от выборки.

                        • Re: Как посчитать долю?
                          Светлана Зорихина

                          И еще вариант, без переменных и необходимости выбирать определенный период из списка:

                          Sum(TOTAL {1 < Период={$(=If( IsNull( GetFieldSelections(Период)), '*', GetFieldSelections(Период)))}>} Денюжки)

                          • Re: Как посчитать долю?
                            Vsevolod Khassanov

                            С ключевым словом ALL должно сработать

                            Capture.PNG