当前位置: 首页 > 面试题库 >

Postgres按时间戳分组到6个小时的存储桶中

谢裕
2023-03-14
问题内容

我有下面的简单表:

ID      TIMESTAMP               VALUE
4   2011-05-27 15:50:04 1253
5   2011-05-27 15:55:02 1304
6   2011-05-27 16:00:02 1322
7   2011-05-27 16:05:01 1364

我想了平均VALUES,并且GROUPTIMESTAMP一天为6个小时桶。例如00:00至06:00、06:00至12:00、12:00至18:00和18:00至00:00。

我可以使用以下查询按年,月,日和小时分组:

select avg(VALUE),
  EXTRACT(year from TIMESTAMP) AS year,
  EXTRACT(month from TIMESTAMP) AS month,
  EXTRACT(day from TIMESTAMP) as day
    from TABLE
      group by year,month,day

但是我无法将每天分为上述4个时段,非常欢迎您提供任何帮助。


问题答案:

我认为将(商的小时数/ 6)的商的整数值分组应该会有所帮助。试试看,看看是否有帮助。您的分组依据应该是

group by year, month, day, trunc(EXTRACT(hour from TIMESTAMP) / 6)

其背后的逻辑是,当日期的小时部分除以6时,int值只能是

    0 - 0:00 - 5:59:59
    1 - 6:00 - 11:59:59
    2 - 12:00 - 17:59:59
    3 - 18:00 - 23:59:59

使用此功能进行分组应该每天将您的数据分为4组,这是您所需要的。



 类似资料:
  • 问题内容: 我有一个用例,其中: 数据的格式为:Col1,Col2,Col3和时间戳。 现在,我只想获取行数与时间戳箱的数量。 也就是说,对于每半小时的存储桶(甚至没有对应行的存储桶),我需要计算有多少行。 时间戳记分布在一年内,因此我无法将其划分为24个存储桶。 我必须每隔30分钟将它们装箱。 问题答案: 通过

  • 看起来(也许我错了),如果您想要保留JDBC和Postgres发生的事情的时区,您需要将时区与时间戳分开存储。 也就是说,我更愿意给我的ORM/JDBC/JPA一个Java(或Joda),其中包括时间区域到Postgres字段。我希望在检索时,不管服务器的时区(或默认为UTC)如何,都能返回一个,时区为。但只需看看大多数JDBC代码(以及依赖于它的事情不会发生)。 这是正确的吗? 当postgre

  • 问题内容: 我有一个名为列是一个。因此,例如,平均外观值可能是:。我希望能够搜索并返回一天中特定时间的所有结果,而不考虑日期。 例如,如果我在列中搜索值,它将返回: 有什么想法吗? 问题答案: 您可以使用HOUR()函数: las,一旦您查询了几千行,该查询的性能将非常 糟糕 -函数不可索引,因此每次运行此查询时都会进行全表扫描。 在类似情况下的操作:创建了另一列,对其进行了索引,并在插入时填充了

  • 问题内容: 我有一个数据集: 我想基本上在一个小时内“拆分”这些时间间隔,例如: 到目前为止,这是我的代码(该想法的积分发给@DumitrescuBogdan,将通话数据分为15分钟间隔): 后半部分(在“全部合并”之后)不产生任何结果,前半部分产生以下结果: 谢谢,我是初学者。我了解第一部分;坦白地说,我不明白下半场 我愿意接受其他解决方案。 我正在使用MS-Access 2010 问题答案:

  • 问题内容: 我正在尝试按小时使用量从历史记录表中获取报告。表是; 我想通过组和在指定日期范围内的所有记录。 我使用了类似这样的查询,但是它并不能显示全部时间。 仅在有记录时显示。 问题答案: 您现有的查询可以简化为: 要显示 每一个 小时,包括那些没有数据,就需要外,其所有您想要的数据小时表连接。您可以使用以下命令在查询中建立这样的表: 但是,对于没有数据的组的处理实际上是业务逻辑的问题,最好将其

  • 问候各位程序员,我正在使用HTML PHP编程一个在线购物网站,一切都很顺利,现在我已经到了客户将物品存储到购物车并希望结账的地步,我没有一个真正的付款流程,所以当客户要求退房时,就被认为是他们付款了,我在数据库中创建了一个订单。 我有一个名为orders_id的表,其中存储id(主键-自动递增)、userID(users表中id的外键)和日期(当前时间戳)。 这是激活按钮的代码部分: 这是cre