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