如何根据总小时数计算每日费用?
How to calculate the daily cost based on total hours?
如何使用 SQL 计算成本我想要的是计算单个 CCODE 的成本。在此数据中 table 成本属于日期 (DayUID) 而不是特定的 CCODE,但我们可以根据 CCODE 的小时数为特定的 CCODE 提取成本。数学计算应该类似于 CCODE=SS1,其中 DayUID=DDD1
- CCODE = SS1 为 4 小时
- DDD1 的 CCODE 总时长 = 12 小时
- DayUID = DDD1 费用为 2000
所以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;
如何使用 SQL 计算成本我想要的是计算单个 CCODE 的成本。在此数据中 table 成本属于日期 (DayUID) 而不是特定的 CCODE,但我们可以根据 CCODE 的小时数为特定的 CCODE 提取成本。数学计算应该类似于 CCODE=SS1,其中 DayUID=DDD1
- CCODE = SS1 为 4 小时
- DDD1 的 CCODE 总时长 = 12 小时
- DayUID = DDD1 费用为 2000
所以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;