SELECT
a.alloc_date,
p.plan,
p.emp_id,
a.veh,
a.contri_type,
a.amount,
SUM (a.alloc_qty) AS sum_alloc_qty, -- 1000 funds distributed
SUM (a.alloc_qty * a.amount) AS sum_alloc_value, -- 1000*2 = 2000
COUNT (DISTINCT part_id) AS sum_emp_count, -- 4 employees
MAX (a.alloc_qty * a.amount) AS max_value_to_one_emp, -- 600
null as "emp_count_with_max_value" -- Unable to retrieve - idealy answer should be 3 in this example
FROM
alloc a, emp p
WHERE
A.alloc_date >= TO_DATE ('20111001', 'YYYYMMDD')
AND a.emp_id = p.emp_id
GROUP BY
a.alloc_date,
p.plan,
p.emp_id,
a.veh,
a.contri_type,
a.amount
ORDER BY
alloc_date, emp_id, amount
Здесь существующий запрос работает, как показано ниже.
Предположим, что компания распределяет 1000 фондов, при этом цена каждого фонда равна 2.
Теперь эти 1000 фондов распределены.среди 4 сотрудников.
Основной вопрос заключается в получении максимальной суммы средств для одного сотрудника.Предположим, что распределение фонда составляет:
emp1=600 (300*2), emp2=600 (300*2), emp3=600 (300*2), emp4=300 (300*1)
Итак, здесь максимальная стоимость средств на одного сотрудника = 600.
Это я могу теперь получить по запросу.
Но теперь следующей задачей является получение другого столбца (emp_count_with_max_value
), в котором должно быть указано количество сотрудников, которым присвоено это максимальное значение в каждой группе.
В нашем примере это оказывается3 сотрудника.Но я не могу получить то же самое
Здесь я привел данные только для одной группы.Результирующий вывод запроса должен выглядеть следующим образом:
'11/12/86','abc','E25','pqr','qvr',2,1000,2000,4,600,3