PostgreSQL: объединить записи в таблице

У меня есть одна большая таблица со следующей структурой: PostgreSQL: объединить записи в таблице

Как вы можете видеть на изображении выше, первичный ключ состоит из intervalstart и edgeid, и поэтому в этой таблице нет повторяющихся записей.

Что я хочу сделать сейчас, так это обновить некоторые идентификаторы edgeid, поскольку некоторые из них устарели. Например, я хочу обновить ВСЕ записи, которые имеют edgeid «E304178540From», с новым edgeid «E304178582From». Как вы можете видеть на изображении выше, это не удастся, потому что я бы создал дубликат (но с другими значениями для средней скорости, измерения и количества транспортных средств).

Поэтому в качестве решения я хочу «объединить» эти записи (в этом примере первые две записи на изображении выше) и вычислить новые значения для средней скорости, количества измерений и количества транспортных средств (путем вычисления среднего значения).

Чтобы это выглядело так:

intervalstart | day | edgeid | avgvelocity | measurementcount | vehiclecount

2014-01-01 00:00:00 | 3 | E304178582From | 85 | 1 | 120

Любые предложения о том, как это решить? Спасибо за любую помощь, которую вы можете мне оказать!

Удалите тег mysql из этого вопроса, если ваш вариант использования ограничен базой данных postgresql.

Rishabh Sagar 16.07.2018 13:26
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
1
124
1

Ответы 1

Один из вариантов - использовать предложение ON Conflcit команды вставки. Синтаксис следующий:

INSERT INTO table_name(column_list) VALUES(value_list)
ON CONFLICT target action;

Итак, попробуйте вставить новую запись, которая приведет к конфликту (на основе временной метки и идентификатора края), вычислите новое среднее значение и т. д. В предложении о конфликте. Вы можете обратиться к исходным значениям, используя псевдотаблицу EXCLUDED.

Пожалуйста, обратитесь к документации здесь для получения дополнительной информации: https://www.postgresql.org/docs/9.5/static/sql-insert.html

Другие вопросы по теме