如上图所示,主键由intervalstart和edgeid组成。我现在要执行的操作是导入具有相同intervalstart和相同edgeid的记录,但是具有不同的平均速度,measurementcount和vehiclecount值。 但是,由于要避免表中出现重复条目,我想将这些记录与重复键合并,并计算平均速度,measurementcount和Vehiclecount列的平均值。
我已经找到了名为MERGE的PostgreSQL命令,但我无法全力以赴。 提前非常感谢您!
答案 0 :(得分:1)
您需要查看MySQL GROUP BY或PostgresSQL 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