回答

收藏

SQL中的表分析(乘法)

技术问答 技术问答 248 人阅读 | 0 人回复 | 2023-09-12

我有TABLE_A,我需要从中创造TABLE_A_FINAL。
7 m5 q% `) b- r, y/ i* R" n规则:! p2 Q0 Z( C1 o0 ^0 J9 c& J9 F
在TABLE_A_FINAL行中有所有可能的组合ID_C,如果inTABLE_A是同一组合,ID_C将值相乘WEIGHT。" g. }3 a6 g' a( f
在SQL这可能吗?感谢您的帮助和建议。# E# i- p; ^. a6 T
TABLE_A
$ \# _( q5 ]$ `; Y- TID_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" a) ?, o/ q* _. O) m  z9 S. }. h  M
ID_C   |FINAL_WEIGHT          |1A     |1.15×1.13 = 1.2995    | 1B     |1.655555                                                                                                                                                                                                                                 | 2A     |1.85×1.57 = 2.9045    |                 7 l& X' M% g: s! X0 N' y. t- U
    解决方案:                                                               
/ N4 z$ K" u7 e  O7 Z0 Y                                                                不幸的是,Postgres没有product()聚合功能。sum()用日志/幂运算模拟此类功能。因为你的值似乎是正的,而不是零:
9 k' F5 L! V8 _% f  Vselect id_c,exp(sum(ln(weight)) as final_weightfrom table_agroup by id_c;如果你有零或负数,逻辑会更复杂,但仍有可能。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则