Ho fatto una domanda qui: /programming/43807566/how-to-divide-two-values-from-the-same-column-but-at-different-rows
sulla divisione dei valori dalla stessa tabella, nella stessa colonna ma su righe diverse. Ora ho il problema di avere più numeratori e denominatori (con differenti uns
). È ancora self join
un buon modo per risolvere questo problema con Postgres o ci sono soluzioni migliori?
Esempio:
| 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 |
Il risultato dovrebbe essere:
| postcode | formula |
|----------|------------|
| AA | 18.888... |
| BB | 14.375 |
Dove il valore è raggruppato per codice postale e la formula è (valore con uns):
(V53 * V56 + V54 * V57 + V55 * V58) / (V56 + V57 + V58)
Prestare attenzione per evitare l'eventuale divisione per zero. La formula può essere ancora più complessa ma questo è un buon esempio.
uns
diventino i nomi delle colonne - da lì, qualunque formula usi i valori dovrebbe diventare fattibile. La formula sarà codificata o derivata in modo dinamico in qualche modo?