He hecho una pregunta aquí: /programming/43807566/how-to-divide-two-values-from-the-same-column-but-at-different-rows
sobre dividir valores de la misma tabla, en la misma columna pero en diferentes filas. Ahora tengo el problema donde tengo más numeradores y denominadores (con diferentes uns
). ¿Sigue siendo la self join
mejor manera de resolver este problema con Postgres o hay mejores soluciones?
Ejemplo:
| 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 |
El resultado debe ser:
| postcode | formula |
|----------|------------|
| AA | 18.888... |
| BB | 14.375 |
Donde los valores se agrupan por código postal y la fórmula es (valor con uns):
(V53 * V56 + V54 * V57 + V55 * V58) / (V56 + V57 + V58)
Prestando atención para evitar la eventual división por cero. La fórmula puede ser aún más compleja, pero ese es un buen ejemplo.
uns
conviertan en nombres de columna; a partir de ahí, cualquier fórmula que use los valores debería ser viable. ¿La fórmula estará codificada o se derivará dinámicamente de alguna manera?