Saya telah mengajukan pertanyaan di sini: /programming/43807566/how-to-divide-two-values-from-the-same-column-but-at-different-rows
tentang membagi nilai dari tabel yang sama, pada kolom yang sama tetapi pada baris yang berbeda. Sekarang saya memiliki masalah di mana saya memiliki lebih banyak pembilang dan penyebut (dengan berbeda uns
). Apakah masih self join
cara yang baik untuk menyelesaikan masalah ini dengan Postgres atau ada solusi yang lebih baik?
Contoh:
| 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 |
Hasilnya harus:
| postcode | formula |
|----------|------------|
| AA | 18.888... |
| BB | 14.375 |
Di mana nilai dikelompokkan berdasarkan kode pos dan rumusnya (nilai dengan uns):
(V53 * V56 + V54 * V57 + V55 * V58) / (V56 + V57 + V58)
Membayar perhatian untuk menghindari pembagian akhirnya dengan nol. Formula bisa menjadi lebih rumit tetapi itu adalah contoh yang bagus.
uns
menjadi nama kolom - dari sana, formula apa pun yang menggunakan nilai harus dapat diterapkan. Apakah formula tersebut akan dikodekan secara keras, atau diturunkan secara dinamis entah bagaimana?