Как получить сумму значений по идентификатору и обновить существующие записи в другой таблице
У меня есть две таблицы, такие как:
ID | TRAFFIC
fd56756 | 4398
645effa | 567899
894fac6 | 611900
894fac6 | 567899
а также
USER | ID | TRAFFIC
andrew | fd56756 | 0
peter | 645effa | 0
john | 894fac6 | 0
мне нужно получить SUM ("TRAFFIC")
из первой таблицы И установить трафик столбца для второй таблицы, где первая таблица ID = second
идентификатор таблицы Идентификаторы из первой таблицы не являются уникальными и могут дублироваться.
Как я могу это сделать?
2 ответа
Решение
Названия таблиц из вашего последующего комментария. Скорее всего, вы сообщаете неверно имена таблиц и столбцов.
UPDATE users u
SET "TRAFFIC" = sub.sum_traffic
FROM (
SELECT "ID", sum("TRAFFIC") AS sum_traffic
FROM stats.traffic
GROUP BY 1
) sub
WHERE u."ID" = sub."ID";
В сторону: в Postgres неразумно использовать смешанные идентификаторы. Используйте легальные строчные идентификаторы, которые не нужно заключать в двойные кавычки, чтобы облегчить вашу жизнь. Начните с чтения руководства здесь.
Что-то вроде этого?
UPDATE users t2 SET t2.traffic = t1.sum_traffic FROM
(SELECT sum(t1.traffic) t1.sum_traffic FROM stats.traffic t1)
WHERE t1.id = t2.id;