在SQL查询中使用聚合函数

时间:2012-03-30 06:25:10

标签: mysql sql database

我有像这样的表格结构::

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个),然后计算他们percent_Complete的平均值。

例如,如果人A被分配了A1,A2,A3(Act_ID)。然后对应(Percent_Complete值加法)/ 3。基本上是一个平均值。在我想要的最终查询结果中:

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

我是怎么做到的?我是否必须使用嵌套的WHERE IN子句?谢谢。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

我可能会遗漏一些细微差别,但听起来你可以这样做:加入表格,按员工分组,COUNTAVG加载。

答案 2 :(得分: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

答案 3 :(得分: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