gpt4 book ai didi

java - 使用java以最有效的方式汇总数据列表

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:48 25 4
gpt4 key购买 nike

我有一个这样的数据列表。

start: 1455262571155, seconds: 40, name: "quant1"
start: 1455263331610, seconds: 120, name: "quant2"
start: 1455263331610, seconds: 120, name: "quant2"
start: 1455263331610, seconds: 120, name: "quant3"

这个列表会继续下去。它总是有一个传感器何时上线以及持续多长时间的时间戳。您似乎一个值不是唯一的,可以同时出现。同时,另一个值可能会出现。

现在我想把这些数据转成这样的格式。

time: 12:50, value: "quant1", amount: 1
time: 12:51, value: "quant2", amount: 2
time: 12:52, value: "quant2", amount: 1

(假设开始时间戳表示 12:50...)

现在我看到了不同的问题,因为算法需要检查给定时间戳是否已经存在值。在 Java 中执行此操作的最有效方法是什么?

这些数据存储在 PostgreSQL 数据库中。

最佳答案

沿着这些路线的东西会给你你想要的东西:

SELECT TO_CHAR(TIMESTAMP 'epoch' + (start / 1000) * INTERVAL '1 second', 'HH:MI') AS time,
name AS value, COUNT(*) AS amount
FROM yourTable
GROUP BY TO_CHAR(TIMESTAMP 'epoch' + (start / 1000) * INTERVAL '1 second', 'HH:MI'),
name

这里的复杂性在于将自纪元以来的秒数转换为 TIMESTAMP,然后将该时间戳转换为 HH:MI 格式。

代码

TIMESTAMP 'epoch' + (start / 1000) * INTERVAL '1 second'

将您的 start 字段(以毫秒为单位)转换为 TIMESTAMP 类型。除以 1000 是将毫秒转换为秒所必需的。 TO_CHAR() 函数将该时间戳转换为您想要的 HH:MI 格式。

关于java - 使用java以最有效的方式汇总数据列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35357519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com