计算 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
我有 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