Postgresql - Временная метка GROUP BY И car_id - PullRequest
0 голосов
/ 02 июля 2018

У меня есть таблица с записями автомобилей:

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 'ed объединяются.

Я пробовал:

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 Ответ

0 голосов
/ 02 июля 2018

Ты почти у цели. Замените 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...