Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Vasiliy_Beshentsev
Creator III
Creator III

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

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

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

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

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

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

10 Replies
Vasiliy_Beshentsev
Creator III
Creator III
Author

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

Eugeny_Ilyin
Creator II
Creator II

Привет, используйте Total с полями, примерно так: sum( total <Агент> Сумма)
Vasiliy_Beshentsev
Creator III
Creator III
Author

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

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

svetlaya
Contributor II
Contributor II

Добрый день!

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

Vasiliy_Beshentsev
Creator III
Creator III
Author

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

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

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

Eugeny_Ilyin
Creator II
Creator II

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

Vasiliy_Beshentsev
Creator III
Creator III
Author

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 агента из нескольких тысяч, чтобы доля не смущала)

svetlaya
Contributor II
Contributor II

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

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

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

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

svetlaya
Contributor II
Contributor II

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

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