根据事件时间戳组合行

Posted

技术标签:

【中文标题】根据事件时间戳组合行【英文标题】:Combine Rows According To Event Timestamp 【发布时间】:2021-08-06 15:21:04 【问题描述】:

我试图围绕什么是最好的 postgresql 查询来将下表合并为一个包含 user_id 和 tx_id 的时间戳记录行,而不是显示为 2 行?

如果有助于清晰,user_id 和 tx_id 的数据类型是字符串。

当前表:

timestamp      user_id       tx_id
4/8/2021 9:21  fa6f6229906
4/8/2021 9:21                2

预期结果:

timestamp      user_id       tx_id
4/8/2021 9:21  fa6f6229906   2

【问题讨论】:

Postgres 的红移?这是两种截然不同的数据库产品。 【参考方案1】:

你可以试试 max()。

select timestamp
     , max(user_id) user_id
     , max(tx_id) tx_id
  from some_table 
 group by timestamp;

注意:您应该避免创建列名时间戳。 Timestamp 是一个准保留字 Postgres 和一个 SQL 保留字和一个数据类型。使用它作为列名是非常糟糕的做法。

【讨论】:

@Belayar 试过这个,得到的查询数据是一样的。仅当字符串数据仅包含数字时,我才使用 SUM 取得了一些初步成功。如果字符串数据包含我们在 user_id 列中的字母数字,它将不起作用。【参考方案2】:

我发现这篇文章中的内部连接解决方​​案非常适合我们的需要。

https://***.com/a/48846014/16081058

【讨论】:

以上是关于根据事件时间戳组合行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 python 在 HIVE 中创建 UDF 进行时间戳转换

如何在 DB2 SQL 中创建一个给出给定行时间戳之前 5 分钟内所有行总和的列?

Apache Spark 将事件计数到时间戳存储桶中

根据事件时间戳组合行

Mysql查询将返回数据库中时间戳之间的空闲槽

php怎么将指定日期转换为时间戳