У меня есть таблица, которая выглядит следующим образом:
Как вы можете видеть на изображении выше, первичный ключ состоит из интервального начала и края. Теперь я пытаюсь импортировать записи с тем же самым интервалом и тем же самым краем, но с разными значениями для avgvelocity, measurementcount и Vehiclecount. Но поскольку я хочу избежать дублирования записей в таблице, я хочу объединить эти записи с дублирующимся ключом и вычислить среднее значение по столбцам avgvelocity, measurementcount и Vehiclecount.
Я уже нашел команду PostgreSQL под названием MERGE, но я не могу понять, как это сделать. Огромное спасибо заранее!
Вам нужно посмотреть предложение MySQL GROUP BY или PostgresSQL GROUP BY, чтобы сделать то, что вы хотите.
SELECT intervalstart,edgeid, AVG(avgvelocity), AVG(measurementcount), AVG(vehiclecount)
FROM mytable GROUP BY intervalstart, edgeid
Все записи группируются ("объединены") по интервалу и краю, вы можете затем использовать агрегатные функции, такие как AVG для средних по негрупповым столбцам.
В MySQL (я не знаю о PostgresSQL) - если вам нужен столбец "день", вы можете получить это, используя функцию ANY_VALUE, которая получит значение из одной из строк.
SELECT intervalstart,edgeid, ANY_VALUE(day), AVG(avgvelocity), AVG(measurementcount), AVG(vehiclecount)
FROM mytable GROUP BY intervalstart, edgeid