Eu fiz uma pergunta aqui: /programming/43807566/how-to-divide-two-values-from-the-same-column-but-at-different-rows
sobre como dividir valores da mesma tabela, na mesma coluna, mas em linhas diferentes. Agora eu tenho o problema em que tenho mais numeradores e denominadores (com diferentes uns
). Ainda é self join
uma boa maneira de resolver esse problema com o Postgres ou existem soluções melhores?
Exemplo:
| 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 |
O resultado deve ser:
| postcode | formula |
|----------|------------|
| AA | 18.888... |
| BB | 14.375 |
Onde o valor é agrupado por código postal e a fórmula é (valor com uns):
(V53 * V56 + V54 * V57 + V55 * V58) / (V56 + V57 + V58)
Preste atenção para evitar eventual divisão por zero. A fórmula pode ser ainda mais complexa, mas esse é um bom exemplo.
uns
nomes das colunas se tornem - a partir daí, qualquer fórmula que use os valores se tornará viável. A fórmula será codificada ou derivada dinamicamente de alguma forma?