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
你嘗試了什麼? – 2012-01-09 13:00:40
您的結果中每組有多少行?每個員工有一行嗎? – 2012-01-09 13:05:12
@Scott:我試圖使用count(*)(由MAX分區(a.alloc_qty * a.amount))作爲「emp_count_with_max_value」.....但它給了我錯誤的輸出 – 2012-01-09 13:05:33