gpt4 book ai didi

sql - 为什么这个 SQL SUM 语句是正确的?

转载 作者:行者123 更新时间:2023-12-02 07:51:49 24 4
gpt4 key购买 nike

在我的架构中,我有一个表项目和一个表任务。每个项目都由任务组成。每个任务都有 Hours 和 PercentComplete。

示例表:

ProjectID    TaskID    Hours   PercentComplete1            1         100     501            2         120     80

I am trying to get the weighted percentage complete for the project. I am doing this using the following SQL statement:

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%)。但我似乎无法理解它为什么会这样做。

为什么这个查询有效?

最佳答案

  • SUM(T.PercentComplete * T.Hours)/100 是完整小时数。
  • SUM(T.Hours) 是总小时数。
  • 这两个量的比率,即:

    (SUM(T.PercentComplete * T.Hours) / 100) / SUM(T.Hours)

    是完成时间的比例(应该在 0 到 1 之间)。

  • 将其乘以 100 得出百分比。

我更喜欢将这样的百分比保留在数据库之外,并将它们移至表示层。如果数据库存储“完成小时数”和“总小时数”并且根本不存储百分比,那将会容易得多。计算中多出的 100 因素混淆了这个问题。

关于sql - 为什么这个 SQL SUM 语句是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com