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
Здесь существующий запрос работает, как показано ниже.Не удалось получить желаемые данные из запроса sql
Предположим, компания распределяет 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
Что вы попробовали? –
Сколько строк на группу у вас есть в вашем результате? У вас есть одна строка на одного сотрудника? –
@Scott: Я пытаюсь использовать count (*) over (partition by MAX (a.alloc_qty * a.amount)) как «emp_count_with_max_value» ..... но это дает мне неправильный вывод –