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