У меня есть таблица postgres predicted_data
:
id | lat | lon | predicted
----+-----+-----+-----------
1 | 1 | 1 | 10
2 | 2 | 2 | 20
3 | 3 | 3 | 30
У меня есть другая таблица observed_data
:
id | lat | lon | observed | error
----+-----+-----+----------+-------
1 | 1 | 1 | 11 |
2 | 2 | 2 | 25 |
3 | 3 | 3 | 32 |
Я хочу заполнить столбец error
observed_data
.Для первой строки я бы сделал:
UPDATE observed_data
SET error =
((SELECT predicted FROM predicted_data WHERE lat = 1 AND lon = 1) - (SELECT observed FROM observed_data WHERE lat = 1 AND lon = 1))
WHERE lat = 1 AND lon = 1 AND id = 1;
Есть ли какой-нибудь способ, которым я могу написать этот запрос, чтобы я делал это для каждой отдельной строки сразу?
Мой окончательный результат должен быть:
id | lat | lon | observed | error
----+-----+-----+----------+-------
1 | 1 | 1 | 11 | -1
2 | 2 | 2 | 25 | -5
3 | 3 | 3 | 32 | -2