Показать часть таблицы по заданному параметру

Автор Elena, апреля 10, 2018, 03:44:39 pm

« предыдущая - следующая »

Elena

апреля 10, 2018, 03:44:39 pm Последнее редактирование: апреля 10, 2018, 03:46:13 pm от Elena
Здравствуйте, уважаемые специалисты QV!
Помогите мне, пожалуйста, разобраться с таблицей, как в ней можно вывести имена(поле "name" и соответствующие им суммы(столбец "PeopleCount" ) занимающих  первые 75% доли от общей суммы:
То есть должны быть выведена вот эта часть таблицы:



Названия строк   Сумма по полю PeoplesCount   Доля
Ada   1482000   18,19%
Aaron   1110000   13,62%
Ace   846000   10,38%
Abdullah   669000   8,21%
Abdul   504000   6,19%
Abraham   456000   5,60%
Abel   417000   5,12%
Abbott   358000   4,39%
Abigail   258000   3,17%

Доля этой выборки  составляет 74.86% примерно 75%
Я приложила файл QV к сообщению. Скажите можно ли решить требуемый вопрос написанием подходящего выражения или необходимо писать макрос?
Буду невероятно благодарна помощи!

admin

Привет.
Попробуйте создать таблицу с измерением name и выражением:
if(
RangeSum(
Above(
sum(aggr(Sum (PeoplesCount),name))/sum(aggr(Sum (total PeoplesCount),name))
,0,RowNo()))<0.75,
Sum (PeoplesCount))

Elena

апреля 11, 2018, 09:32:43 am #2 Последнее редактирование: апреля 11, 2018, 10:08:21 am от Elena
Хм, спасибо за совет, сделала как вы сказали, но результат неутешительный....не выводит нужный диапазон, да ещё и сумма в итоге на миллион превышает совокупную исходную...
А у вас  получилось вывести первые 75% ? может я что-то не так делаю....
Должно получиться на выходе:

https://ibb.co/manWCH

admin

апреля 11, 2018, 07:44:49 pm #3 Последнее редактирование: апреля 11, 2018, 07:46:41 pm от admin
Формула рабочая:
if(RangeSum(
Above(
sum(aggr(Sum (PeoplesCount),name))/sum(aggr(Sum (total PeoplesCount),name))
,0,RowNo())
)<0.75,
sum(aggr(Sum (PeoplesCount),name)),0)

Таблицу сортируем по выражению для поля name sum(aggr(Sum (PeoplesCount),name))
[smg id=86]

Проверял в Qlik Sense, но это сути не меняет.

admin

апреля 12, 2018, 09:55:25 am #4 Последнее редактирование: апреля 12, 2018, 09:57:58 am от admin
Выше выложил рабочую формулу.
Вам необходимо будет понять работу функций:


Elena

Простите меня, что я вас отвлекаю, но посмотрите мой файл в который я вставила код.
В нём выводится абсолютно вся таблица, а не только 75 процентов и к тому же какие-то странные суммы....

admin


Elena

сортировку делала, может какая-то ещё существует сортировка, но мне надо чтобы вывелось на экран только то что у вас на картинке, а не вся таблица только отсортированная....мне необходимо в дальнейшем выгружать из QV в ексель эту часть(75 проц от всего)

Elena

А можно ли как-то выделить нижнюю границу искомого списка? Тогда достаточно применить простую формулу Sum (PeoplesCount)/sum(Sum (total PeoplesCount), отсортировать и настроить так чтобы цветом выделилась граница и тогда легко было бы видно что зафильтровать и выгрузить

admin

Используйте обычную таблицу вместо сводной.
Вы выводите значение PeoplesCount как измерение, зачем? все выражения строятся по Name и Сумме для каждой строки.
Уберите расчет доли, его тоже надо делать с условиями.

Elena

А в можете приложить свой файл с формулой...не могу я понять почему у меня она не срабатывает...

admin

Я открываю в Qlik Sense ваш файл.
Оставьте 2 столбца, имя и формулу.
включите простую таблицу.
в Сортировке по name пропишите формулу sum(aggr(Sum (PeoplesCount),name)).

Elena

но когда я (уже в простой таблице) отфильтровываю первые имена занимающие 75 процентов, то обнуляются суммы последних пяти из зафильтрованного списка(( я файл таблицы прикрепила

admin

Цитата: Elena от апреля 12, 2018, 05:13:36 pm
но когда я (уже в простой таблице) отфильтровываю первые имена занимающие 75 процентов,


Каким образом?

Elena

Добрый день, отсортированный список(только 75 процентов)  мне надо вывести в ексель, поэтому я выделяю в QV первые имена, чтобы отправить в файл нужную информацию. При этом последние в данном примере пять имен обнуляются((

Рейтинг@Mail.ru Яндекс.Метрика