如何根据总小时数计算每日费用?

How to calculate the daily cost based on total hours?

如何使用 SQL 计算成本我想要的是计算单个 CCODE 的成本。在此数据中 table 成本属于日期 (DayUID) 而不是特定的 CCODE,但我们可以根据 CCODE 的小时数为特定的 CCODE 提取成本。数学计算应该类似于 CCODE=SS1,其中 DayUID=DDD1

所以SS1的费用基本上是这样算的(4小时/12小时) * 2000 = 666.67

DayUID | DayCost | PCODE | CCODE | Duration |
---------------------------------------------
DDD1   | 2000    | TS    | SS1   | 3        |
DDD1   | 2000    | TS    | SS1   | 1        |
DDD1   | 2000    | TS    | ST2   | 2        |
DDD1   | 2000    | P     | ST2   | 6        |
DDD2   | 3000    | P     | IH1   | 6.6      |
DDD2   | 3000    | U     | IH1   | 4        |
DDD2   | 3000    | TS    | IH2   | 1        |
DDD3   | 1200    | TU    | SC1   | 7        |
DDD3   | 1200    | P     | SC2   | 8        |
DDD3   | 1200    | U     | CMPLT | 3        |

在子查询中通过 DayUID 和 CCODE 获取总持续时间:

  SELECT a.DayUID, 
         a.CCODE, 
         SUM(a.Duration) / b.Duration * a.DayCost
    FROM Table1 a
    JOIN (SELECT DayUID, 
                SUM(Duration) Duration 
           FROM Table1 
       GROUP BY DayUID) b 
      ON a.DayUID = b.DayUID
GROUP BY DayUID, CCODE;

SQLFiddle