在我的模式中,我有一个表项目和一个表任务。每个项目都由任务组成。每个任务都有小时和百分比完成。为什么这个SQL SUM语句正确?
示例表:
ProjectID TaskID Hours PercentComplete 1 1 100 50 1 2 120 80
我想获得的加权比例为完成该项目。我使用下面的SQL语句执行此操作:
SELECT P.ProjectID, P.ProjectName, SUM(T.Hours) AS Hours,
SUM(T.PercentComplete * T.Hours)/100 AS CompleteHours,
SUM(T.PercentComplete * T.Hours)/SUM(T.Hours) AS PercentComplete
FROM Projects AS P INNER JOIN
Tasks AS T ON T.ProjectID = P.ProjectID
WHERE (P.ProjectID = 1)
我的问题是有关声明的这一部分:
SUM(T.PercentComplete * T.Hours)/SUM(T.Hours) AS PercentComplete
这让我对这个项目的正确加权百分比(在的情况下以上样本数据,66%)。但我似乎无法围绕为什么这样做。
此查询为何起作用?
你不明白什么?你会如何试图写这个查询? – 2010-08-03 18:51:55
我写了这个查询。我只是不知道为什么它给了我正确的结果。 – 2010-08-03 18:52:31
在这里寻找整数数学。你真的想要得到舍入而不是准确的数字吗? – HLGEM 2010-08-03 18:57:16