计算 Oracle 中列的速率

Calculate rate of Columns in Oracle

我有 table 和 below.I 一样,也在 Oracle 包中保留了一个变量,以便在下面的 table 中使用。

例如:q_value = 27;

通过对 table 分组的每一列,我想做这个计算 q_value * ((piece_value)/(all_piece_values))

对于 2111TN 是费率 VALUE:27*/(658)/(658+388))

对于 2112TN 是费率 VALUE:27*/(388)/(658+388))

PIECE MPIECE PART VALUE
2111TN 2110HB 1 658
2111TN 2110HB 1 658
2112TN 2110HB 2 388
2112TN 2110HB 2 388

所以查询结果对我来说应该是这样的:

PIECE MPIECE PART VALUE RATE
2111TN 2110HB 1 658 17
2112TN 2110HB 2 388 10

我应该如何创建查询?

除了使用分析函数,我在这里看不到任何其他方法

select piece, mpiece, part, value,
       round(27 * value/(sum(value) over())) rate
  from some_table
 group by piece, mpiece, part, value