Как рассчитать ежедневную стоимость на основе общего количества часов?
Как рассчитать стоимость с помощью SQL, что я хочу, чтобы рассчитать стоимость для одного CCODE. В этой таблице данных стоимость относится к дню (DayUID), а не к конкретному CCODE, но мы можем извлечь его для конкретной базы CCODE по часам CCODE. Математический расчет должен быть похож на, скажем, CCODE = SS1, где DayUID=DDD1
- CCODE = SS1 составляет 4 часа
- Общая продолжительность CCODE для DDD1 = 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 |
1 ответ
Решение
Получить общую продолжительность по 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;