私はここで質問をしました:https: //stackoverflow.com/questions/43807566/how-to-divide-two-values-from-the-same-column-but-at-different-rows
同じ列の異なる行にある同じテーブルの値の分割について。今、私はより多くの分子と分母(異なるuns
)を持っているという問題を抱えています。self join
Postgresでこの問題を解決する良い方法はまだありますか、それともより良い解決策がありますか?
例:
| postcode | value | uns |
|----------|-------|-----|
| AA | 40 | 53 |
| BB | 20 | 53 |
| AA | 10 | 54 |
| AA | 20 | 55 |
| AA | 10 | 56 |
| AA | 30 | 57 |
| AA | 50 | 58 |
| BB | 10 | 54 |
| BB | 10 | 55 |
| BB | 70 | 56 |
| BB | 80 | 57 |
| BB | 10 | 58 |
結果は次のようになります。
| postcode | formula |
|----------|------------|
| AA | 18.888... |
| BB | 14.375 |
値が郵便番号でグループ化され、式が(unsを含む値)である場合:
(V53 * V56 + V54 * V57 + V55 * V58) / (V56 + V57 + V58)
ゼロによる最終的な除算を回避するように注意を払います。数式はさらに複雑になる可能性がありますが、それは良い例です。
uns
て列名になるようにすることです。そこから、値を使用するすべての式が機能するようになります。数式はハードコードされますか、それとも何らかの形で動的に導出されますか?