Объединить строки с одинаковым первичным ключом и вычислить среднее значение для нового значения

0

У меня есть таблица, которая выглядит следующим образом: Изображение 174551

Как вы можете видеть на изображении выше, первичный ключ состоит из интервального начала и края. Теперь я пытаюсь импортировать записи с тем же самым интервалом и тем же самым краем, но с разными значениями для avgvelocity, measurementcount и Vehiclecount. Но поскольку я хочу избежать дублирования записей в таблице, я хочу объединить эти записи с дублирующимся ключом и вычислить среднее значение по столбцам avgvelocity, measurementcount и Vehiclecount.

Я уже нашел команду PostgreSQL под названием MERGE, но я не могу понять, как это сделать. Огромное спасибо заранее!

Теги:
database
merge

1 ответ

1
Лучший ответ

Вам нужно посмотреть предложение 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню