提前致谢!!
这是我到目前为止所做的:
我为特定所有者选择给定日期范围内的任务总人数。我现在正试图获得每个人的任务数量的确切日平均值。
我遇到的问题是它在平均值的末尾不断返回.00,而不是精确的平均值。例如,一个人一周内可能有2个任务;我的平均值为0.00而不是0.28或0.29
SELECT
convert(nvarchar, COUNT(p.personID)) AS count,
CONVERT(decimal(4, 2), COUNT(p.personID) / DATEDIFF(DAY, @startDate, @endDate)) AS average,
p.personID,
p.firstname,
p.lastname,
c.companyname
FROM
Tasks t
JOIN
Person p ON p.personID = t.personID
JOIN
Client c ON c.id = p.employer
JOIN
Commission m ON m.ClientID = c.ID
WHERE
t.created BETWEEN @startDate AND @endDate
AND m.owner IN ('John Doe')
GROUP BY
p.personID, p.firstname, p.lastname, c.companyname
ORDER BY
c.companyname, count DESC
答案 0 :(得分:2)
请注意,如果enddate和startdate相同,则会得到除以0的错误。
你的问题是COUNT(p.personID)和DATEDIFF(DAY,@ startDate,@ endDate)都返回整数。当分割2个整数时,你得到一个向下舍入的第三个整数。乘以1.0即可得到小数值。
CONVERT(decimal(4,2),1.0*COUNT(p.personID)/DATEDIFF(DAY,@startDate,@endDate))