我有TABLE_A,我需要从中创造TABLE_A_FINAL。
TABLE_A
TABLE_A_FINAL
规则: 在TABLE_A_FINAL具有所有可能组合的行中ID_C,如果inTABLE_A是相同组合,ID_C则将的值相乘WEIGHT。 在SQL中这可能吗?感谢您的帮助和建议。
ID_C
WEIGHT
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 |
ID_C |FINAL_WEIGHT | 1A |1.15×1.13 = 1.2995 | 1B |1.65 | 2A |1.85×1.57 = 2.9045 |
不幸的是,Postgres没有product()聚合功能。您可以使用sum()和日志/幂运算来模拟此类功能。因为您的值似乎都是正的且非零:
product()
sum()
select id_c, exp(sum(ln(weight)) as final_weight from table_a group by id_c;
如果您有零或负数,则逻辑会更复杂,但仍然很有可能。