Как сгруппировать по X минутным приращениям в Presto SQL? - PullRequest
1 голос
/ 15 мая 2019

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

Name, Timestamp, Period, Value
Apple, 2012-03-22 00:00:00.000, 10, 34
Apple, 2012-03-22 00:06:00.000, 10, 23
Orange, 2012-03-22 00:00:00.000, 5, 3
Orange, 2012-03-22 00:08:00.000, 5, 45

Если период столбца - это N минут, с которыми он должен быть сгруппирован по часам. Так, например, Apple следует сгруппировать по 1:10, 1:20, 1:30 ex, где Orange - 1:05, 1:10 ect. Я также хотел бы усреднить столбец Значение по каждому из этих приращений.

1 Ответ

1 голос
/ 15 мая 2019

С допущениями, что

  • Period - целое число и делитель 60
  • для двух строк, если Name одинаково, Period одинаково

следующее должно сделать

SELECT
    name,
    date_trunc('minute', timestamp_column)
      - interval '1' minute * (minute(timestamp_column) % period)
      AS timestamp_rounded,
    avg(value)
FROM ...
GROUP BY 1, 2
...