一尘不染

SQL中的表分析(乘法)

sql

我有TABLE_A,我需要从中创造TABLE_A_FINAL

规则:
TABLE_A_FINAL具有所有可能组合的行中ID_C,如果inTABLE_A是相同组合,ID_C则将的值相乘WEIGHT
在SQL中这可能吗?感谢您的帮助和建议。

TABLE_A

ID_N  |WEIGHT  |ID_C |
1     |1.15    | 1A  |
2     |1.13    | 1A  |
3     |1.65    | 1B  |
4     |1.85    | 2A  |
6     |1.57    | 2A  |

TABLE_A_FINAL

ID_C   |FINAL_WEIGHT          |
1A     |1.15×1.13 = 1.2995    | 
1B     |1.65                  | 
2A     |1.85×1.57 = 2.9045    | 

阅读 143

收藏
2021-05-30

共1个答案

一尘不染

不幸的是,Postgres没有product()聚合功能。您可以使用sum()和日志/幂运算来模拟此类功能。因为您的值似乎都是正的且非零:

select id_c, exp(sum(ln(weight)) as final_weight
from table_a
group by id_c;

如果您有零或负数,则逻辑会更复杂,但仍然很有可能。

2021-05-30