Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询以获取与group by的总和的平均值_Sql_Group By_Sum_Average - Fatal编程技术网

SQL查询以获取与group by的总和的平均值

SQL查询以获取与group by的总和的平均值,sql,group-by,sum,average,Sql,Group By,Sum,Average,我需要计算员工群体每周平均工作小时数。我拥有的数据是TimeInsectonds、empID、工作部门和工作日期。 大概是这样的: PName EmpID DeptLoc DeptName TimeinSec ApplyDate JRoyce 12345 900 10569 17820 2012-05-10 00:00:00.000 我要查询每周的总小时数。但我不知道如何获得每周empid的平均小时数。感谢您的帮助: PName EmpID Dept

我需要计算员工群体每周平均工作小时数。我拥有的数据是TimeInsectonds、empID、工作部门和工作日期。 大概是这样的:

PName  EmpID  DeptLoc DeptName TimeinSec  ApplyDate

JRoyce  12345  900    10569    17820      2012-05-10 00:00:00.000   
我要查询每周的总小时数。但我不知道如何获得每周empid的平均小时数。感谢您的帮助:

PName  EmpID  DeptLoc DeptName TimeinSec  ApplyDate

JRoyce  12345  900    10569    17820      2012-05-10 00:00:00.000   
select PName, EmpID, DeptLoc, DeptName, Sum(timeinsec/3600.0) as Totalhrs, (Datepart(WK,applydate))
 from EmpTable
Group by PName, EmpID, DeptLoc, DeptName, (Datepart(WK,ApplyDate))
Order by EmpID, WeekNo
它为我提供了TotalHrs所需的结果:

PName  EmpID  DeptLoc DeptName TimeinSec  ApplyDate

JRoyce  12345  900    10569    17820      2012-05-10 00:00:00.000   
EmpName   EmpID  DeptLoc   DeptID  TotalHrs WeekNo

JRoyce    12345  900       10569   14.9166  27
JRoyce    12345  900       10569   18.0666  28
现在我想按empID按周按平均小时数对这些进行分组,以便显示第27周、第28周等的平均工作小时数

PName  EmpID  DeptLoc DeptName TimeinSec  ApplyDate

JRoyce  12345  900    10569    17820      2012-05-10 00:00:00.000   

我尝试使用innerquery,但它给出了所有TotalHrs的平均值

将总小时数除以一周的工作天数。请参见下文中的AvgHours计算

PName  EmpID  DeptLoc DeptName TimeinSec  ApplyDate

JRoyce  12345  900    10569    17820      2012-05-10 00:00:00.000   
select  PName
        , EmpID
        , DeptLoc
        , DeptName
        , Sum(timeinsec/3600.0) as Totalhrs
        , Sum(timeinsec/3600.0) / Count(applydate) as AvgHours
        , (Datepart(WK,applydate))
from EmpTable
Group by 
        PName
        , EmpID
        , DeptLoc
        , DeptName
        , (Datepart(WK,ApplyDate))
Order by 
        EmpID
        , WeekNo
试试这个:

PName  EmpID  DeptLoc DeptName TimeinSec  ApplyDate

JRoyce  12345  900    10569    17820      2012-05-10 00:00:00.000   
SELECT a.PName, a.DeptLoc, a.DeptName, (Datepart(WK,ApplyDate)) [Week], Avg(Totalhrs) as Avghrs
FROM(
select PName, EmpID, DeptLoc, DeptName, Sum(timeinsec/3600.0) as Totalhrs, (Datepart(WK,applydate))
 from EmpTable
Group by PName, EmpID, DeptLoc, DeptName, (Datepart(WK,ApplyDate))
) a
GROUP by a.PName, a.DeptLoc, a.DeptName, (Datepart(WK,ApplyDate))

如果需要每周平均小时数,请从
组中删除
empid

PName  EmpID  DeptLoc DeptName TimeinSec  ApplyDate

JRoyce  12345  900    10569    17820      2012-05-10 00:00:00.000   
select Datepart(WK,applydate) as weeknum,
       Sum(timeinsec/3600.0) as Totalhrs / count(distinct empid) as avgHrsPerEmployee
from EmpTable
Group by Datepart(WK,ApplyDate)
Order by WeekNum;

平均值是通过将所有时间相加并除以员工人数来确定的。

您所说的第27周、第28周等的平均工作时数是什么意思?平均每天工作小时数?谢谢大家。但它给我的是每日平均值,而不是每周平均值。我想看看每周平均工作时间。例如,如果一周的每日总小时数为14.9166 18.0666 14.9166 18.0666 14.9166,则周平均小时数显示为16.7666Hi Sev,当我尝试此子查询时,我得到Msg 4104,级别16,状态1,第2行,无法绑定多部分标识符“Emptable.PNAME”。内部查询工作正常。进行了一些更改。试试看。
PName  EmpID  DeptLoc DeptName TimeinSec  ApplyDate

JRoyce  12345  900    10569    17820      2012-05-10 00:00:00.000