2012-03-30 85 views
2

聚合函數我有我的表結構這樣的:使用SQL查詢

ATT_Table : Fields - Act_ID, Assigned_To_ID, Percent_Complete(Integer value) 
Act_ID is primary key, Assigned_To_ID is referenced to Emp_ID in Employee_Table. 

Employee_Table : Fields - Emp_ID, F_Name. 
Emp_ID is primary key. 

現在在特定時間點,1個或更多的活動可以分配給同一個人。我的目標是編寫一個查詢來計算一個人的負載。我想計算分配給特定人員的活動數量(可以大於1),然後取其percent_Complete的平均值。

例如,如果人員A被分配了A1,A2,A3(Act_ID)。然後相應的(Percent_Complete值加)/ 3。基本上是一個平均值。在我的最終查詢結果中,我想要:

Name, Number of activities assigned(Count), load value(Avg). 

我該怎麼做?我必須使用嵌套的WHERE IN子句嗎?謝謝。

回答

1

嘗試以下操作:

select Emp_ID, F_Name, count(Act_ID), avg(Percent_Complete) 
from ATT_Table, Employee_Table where ATT_Table.Assigned_To_ID = Employee_Table.Emp_ID 
group by Emp_ID, F_Name 
+0

感謝維克拉姆... – 2012-03-30 06:48:52

+0

沒有問題,樂意幫忙.. – Vikram 2012-03-30 06:49:35

2

我可能會錯過一些細微差別,但聽起來您可以:加入表格,按員工分組,COUNTAVG加載。

+0

我GT是德米特里..多謝答.. – 2012-03-30 06:49:23

0

由於德米特里說,像

SELECT Employee_Table.F_Name, COUNT(*) AS activities, AVG(Percent_Complete) AS load 
FROM ATT_Table JOIN Employee_Table ON ATT_Table.Assigned_to_ID = Employee_Table.Emp_ID 
WHERE Employee_Table.Emp_ID = 42 
GROUP BY Employee_Table.Emp_ID 
+0

正確。謝謝:) – 2012-03-30 07:00:40

3
SELECT MIN(F_Name) Employee_Name , 
     COUNT(1) Activities_Assigned , 
     AVG(Percent_Complete) Load_Value 
FROM ATT_Table a 
     INNER JOIN Employee_Table e ON a.Assigned_To_ID = e.Emp_ID 
GROUP BY e.Emp_ID 
+0

這ans也工作正常。我們可以標記多個答案嗎? – 2012-03-30 07:00:06

+0

@ user1230183 - 不,儘管你肯定可以贊成它。 – Leigh 2012-03-31 00:23:43