Вы здесь

Отчет "Распределение численности работников по размерам начисленной заработной платы" в QlikView

PDF-версия

Довольно часто возникает необходимость в формировании отчета о распределении записей по диапазонам в зависимости от определенной величины. Например, распределение численности работников по размерам начисленной заработной платы. Или распределение количества накладных (чеков) по сумме покупки. Или распределение численности по возрастным группам.  Вообщем отчет, который дает информацию о количестве объектов определенное значение которых входит в определенные диапазоны (сколько товарных чеков на сумму от 1000 до 3000 или сколько сотрудников получают зарплату от 20 000 до 30 000).

На простом примере я покажу как решается этот вопрос в Qlikview.

Имеется таблица фактов, к примеру сумма начисленной зарплаты за определенный период, где IdTnun – табельный номер сотрудника, SumIn – Начисленная сумма зарплаты.

IdTnum SumIn   IdTnum SumIn
101 6540,5   111 65014
102 10995   112 35412
103 26500,5   113 16880
104 26500   114 14700
105 15000   115 19000
106 15000,1   116 28000
107 14563   117 13490
108 13200   118 16077
109 6400   119 14328
110 15100   120 19746

Таблица 1. Itogi

Требуется распределить и подсчитать количество записей по диапазонам сумм:

Сумма от
(Sum1)

Сумма до
(Sum2)

Обозначение диапазона
(RangeSumIn)

0 4610,99 До 4611 руб.
4611 4611 На уровне 4611 руб.
4611,1 5000 4611,1 - 5000 руб.
5000,1 5300 5000,1 - 5300 руб.
5300,1 5600 5300,1 - 5600 руб.
5600,1 5900 5600,1 - 5900 руб.
5900,1 6200 5900,1 - 6200 руб.
6200,1 6500 6200,1 - 6500 руб.
6500,1 6800 6500,1 - 6800 руб.
6800,1 7100 6800,1 - 7100 руб.
7100,1 7400 7100,1 - 7400 руб.
7400,1 7700 7400,1 - 7700 руб.
7700,1 8000 7700,1 - 8000 руб.
8000,1 8500 8000,1 - 8500 руб.
8500,1 9000 8500,1 -9000 руб.
9000,1 9500 9000,1 - 9500 руб.
9500,1 10000 9500,1 - 10000 руб.
10000,1 10500 10000,1 - 10500 руб.
10500,1 11000 10500,1 - 11000 руб.
11000,1 11500 11000,1 - 11500 руб.
11500,1 12000 11500,1 - 12000 руб.
12000,1 12500 12000,1 - 12500 руб.
12500,1 13000 12500,1 - 13000 руб.
13000,1 13500 13000,1 - 13500 руб.
13500,1 14000 13500,1 - 14000 руб.
14000,1 14500 14000,1 - 14500 руб.
14500,1 15000 14500,1 - 15000 руб.
15000,1   Свыше 15000 руб.

Таблица 2: intervalsum

В Qlikview такая задача решается с помощью оператора  IntervalMatch.
Предварительно, в сценарии должны быть загружены обе таблицы.

Схема данных в QlikView

Затем применяем согласно документации:

IntervalMatch ( SumIn ) load Sum1, Sum2 Resident intervalsum;

Устанавливается связь между таблицами "SumIn" и "intervalsum" посредством таблицы соответствий intervalsum-1

Структура данных в QlikView

Которая содержит все соответствия SumIn → Sum1...Sum2

Sum1 Sum2 SumIn
6 200,1 6 500,0 6 400,0
6 500,1 6 800,0 6 540,5
10 500,1 11 000,0 10 995,0
13 000,1 13 500,0 13 200,0
13 000,1 13 500,0 13 490,0
14 000,1 14 500,0 14 328,0
14 500,1 15 000,0 14 563,0
14 500,1 15 000,0 14 700,0
14 500,1 15 000,0 15 000,0
15 000,1   15 000,1
15 000,1   15 100,0
15 000,1   16 077,0
15 000,1   16 880,0
15 000,1   19 000,0
15 000,1   19 746,0
15 000,1   26 500,0
15 000,1   26 500,5
15 000,1   28 000,0
15 000,1   35 412,0
15 000,1   65 014,0

Далее все очень просто, формируем объект "Диаграмма", выбираем измерения (состоящие в ассоциативной связи с данными) и создаем выражение, к примеру:

Численность = count (DISTINCT IdTnum)  .

Получаем требуему.ю таблицу:

Установив связь по полю IdTnum с таблицей, содержащей кадровые сведения, можно получить разнообразные отчеты. Просто, быстро и красиво. В этом и вся прелесть использования Qlikview для формирования управленческой отчетности на предприятии.

Скрипт примера в QlikView 11:


Itogi:
LOAD * INLINE [
    IdTnum, SumIn
    101, "6540,5"
    102, "10995,"
    103, "26500,5"
    104, 26500
    105, 15000
    106, "15000,1"
    107, 14563
    108, 13200
    109, 6400
    110, 15100
    111, 65014
    112, 35412
    113, 16880
    114, 14700
    115, 19000
    116, 28000
    117, 13490
    118, 16077
    119, 14328
    120, 19746
];
intervalsum:
LOAD * INLINE [
    Sum1, Sum2, RangeSumIn
    0, "4610,99", До 4611 руб.
    4611, 4611, На уровне 4611 руб.
    "4611,1", 5000, "4611,1 - 5000 руб."
    "5000,1", 5300, "5000,1 - 5300 руб."
    "5300,1", 5600, "5300,1 - 5600 руб."
    "5600,1", 5900, "5600,1 - 5900 руб."
    "5900,1", 6200, "5900,1 - 6200 руб."
    "6200,1", 6500, "6200,1 - 6500 руб."
    "6500,1", 6800, "6500,1 - 6800 руб."
    "6800,1", 7100, "6800,1 - 7100 руб."
    "7100,1", 7400, "7100,1 - 7400 руб."
    "7400,1", 7700, "7400,1 - 7700 руб."
    "7700,1", 8000, "7700,1 - 8000 руб."
    "8000,1", 8500, "8000,1 - 8500 руб."
    "8500,1", 9000, "8500,1 -9000 руб."
    "9000,1", 9500, "9000,1 - 9500 руб."
    "9500,1", 10000, "9500,1 - 10000 руб."
    "10000,1", 10500, "10000,1 - 10500 руб."
    "10500,1", 11000, "10500,1 - 11000 руб."
    "11000,1", 11500, "11000,1 - 11500 руб."
    "11500,1", 12000, "11500,1 - 12000 руб."
    "12000,1", 12500, "12000,1 - 12500 руб."
    "12500,1", 13000, "12500,1 - 13000 руб."
    "13000,1", 13500, "13000,1 - 13500 руб."
    "13500,1", 14000, "13500,1 - 14000 руб."
    "14000,1", 14500, "14000,1 - 14500 руб."
    "14500,1", 15000, "14500,1 - 15000 руб."
    "15000,1", , Свыше 15000 руб.
];
IntervalMatch ( SumIn ) load Sum1, Sum2 Resident intervalsum;


Обсуждение и вопросы автору на форуме

Тэги: 
Тип материала: