合并具有相同主键的行并计算新值的平均值

时间:2018-07-16 09:28:28

标签: c# mysql database postgresql merge

我有一个如下表: enter image description here

如上图所示,主键由intervalstart和edgeid组成。我现在要执行的操作是导入具有相同intervalstart和相同edgeid的记录,但是具有不同的平均速度,measurementcount和vehiclecount值。 但是,由于要避免表中出现重复条目​​,我想将这些记录与重复键合并,并计算平均速度,measurementcount和Vehiclecount列的平均值。

我已经找到了名为MERGE的PostgreSQL命令,但我无法全力以赴。 提前非常感谢您!

1 个答案:

答案 0 :(得分:1)

您需要查看MySQL GROUP BYPostgresSQL GROUP BY子句以完成所需的操作。

SELECT intervalstart,edgeid, AVG(avgvelocity), AVG(measurementcount), AVG(vehiclecount) 
FROM mytable GROUP BY intervalstart, edgeid

所有记录均按intervalstart和edgeid分组(“合并”),然后可以使用聚合函数(例如AVG)对未分组的列进行平均。

在MySQL中(我不了解PostgresSQL)-如果您需要“ day”列,则可以使用ANY_VALUE函数获得该值,这将从行之一中获取一个值。

SELECT intervalstart,edgeid, ANY_VALUE(day), AVG(avgvelocity), AVG(measurementcount), AVG(vehiclecount) 
FROM mytable GROUP BY intervalstart, edgeid