Я задал вопрос здесь: /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
имена столбцов стали - оттуда, любая формула, использующая значения, должна стать работоспособной. Будет ли формула жестко закодирована или как-то получена динамически?