代码之家  ›  专栏  ›  技术社区  ›  Alfred Balle

Postgresql-按时间戳和车辆id分组

  •  0
  • Alfred Balle  · 技术社区  · 6 年前

    我有一张有汽车记录的桌子:

    table: cars
    
    columns:
    car_id | timestamp | km_driven
    

    我在跑步 PostgreSQL 9.6 .

    我该怎么做:

    SELECT timestamp, car_id, km_driven_within_the_hour FROM cars
    

    我想 GROUP BY 我的 timestamp 因此,每小时记录的所有记录按每辆车分组,然后 km_driven_within_the_hour SUM “艾德在那一小时内就到了。

    我试过:

    SELECT timestamp, car_id, SUM(km_driven) AS km_driven_within_the_hour
    FROM cars
    GROUP BY trunc(EXTRACT(hour from timestamp)), car_id
    

    给我错误:

    ERROR:  function pg_catalog.date_part(unknown, text) does not exist
    

    以及转换时间戳:

    SELECT timestamp, car_id, SUM(km_driven) AS km_driven_within_the_hour
    FROM cars
    GROUP BY trunc(EXTRACT(hour from timestamp::timestamp)), car_id
    

    给我:

    ERROR:  column "cars.timestamp" must appear in the GROUP BY clause or be used in an aggregate function
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   The Impaler    6 年前

    你就快到了。更换 timestamp 按小时计算,如:

    SELECT
        trunc(EXTRACT(hour from timestamp::timestamp)), 
        car_id, 
        SUM(km_driven) AS km_driven_within_the_hour
      FROM cars
      GROUP BY trunc(EXTRACT(hour from timestamp::timestamp)), car_id