ฉันได้ถามคำถามที่นี่: /programming/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
กลายเป็นชื่อคอลัมน์ - จากที่นั่นสูตรใดก็ตามที่ใช้ค่าควรจะสามารถใช้การได้ สูตรจะมีการกำหนดค่าตายตัวหรือได้รับแบบไดนามิกหรือไม่?