在我的問題,我正努力解決,有一個性能值表:SQL Server中,HAVING子句,其中,聚合函數
Staff PerformanceID Date Percentage
--------------------------------------------------
StaffName1 1 2/15/2016 95
StaffName1 2 2/15/2016 95
StaffName1 1 2/22/2016 100
...
StaffName2 1 2/15/2016 100
StaffName2 2 2/15/2016 100
StaffName2 1 2/22/2016 100
和SQL語句如下:
SELECT TOP (10)
tbl_Staff.StaffName,
ROUND(AVG(tbl_StaffPerformancesValues.Percentage), 0) AS AverageRating
FROM
tbl_Staff
INNER JOIN
tbl_AcademicTermsStaff ON tbl_Staff.StaffID = tbl_AcademicTermsStaff.StaffID
INNER JOIN
tbl_StaffPerformancesValues ON tbl_AcademicTermsStaff.StaffID = tbl_StaffPerformancesValues.StaffID
WHERE
(tbl_StaffPerformancesValues.Date >= @DateFrom)
AND (tbl_AcademicTermsStaff.SchoolCode = @SchoolCode)
AND (tbl_AcademicTermsStaff.AcademicTermID = @AcademicTermID)
GROUP BY
tbl_Staff.StaffName
ORDER BY
AverageRating DESC, tbl_Staff.StaffName
我想要做的是,從給定的日期,例如02-22-2016, 我想計算每個工作人員的平均表現。
上面的代碼給了我平均數而不考慮日期過濾器。
謝謝。
你的代碼有'WHERE tbl_StaffPerformancesValues.Date> = @ DateFrom'。不適用日期過濾器嗎?請澄清 –
還是它應該是一個平等的條件? 'tbl_StaffPerformancesValues.Date = @DateFrom' – Squirrel
Percentage的數據類型是什麼?如果它是整數,AVG()它會給你結果只有整數。所以ROUND()實際上沒有效果 – Squirrel