我在这里提出了一个问题: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
成为列名-从那里开始,无论使用该值的公式如何,都应该可行。公式是硬编码的还是以某种方式动态得出的?