Как рассчитать ежедневную стоимость на основе общего количества часов?

Как рассчитать стоимость с помощью 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;

SQLFiddle

Другие вопросы по тегам