Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在值为最大值的位置使用时间戳联接列_Postgresql - Fatal编程技术网

Postgresql 在值为最大值的位置使用时间戳联接列

Postgresql 在值为最大值的位置使用时间戳联接列,postgresql,Postgresql,我有一张看起来像的桌子 +-------+-----------+ | value | timestamp | +-------+-----------+ +---+----------+---+----------+ | 1 | 1.2.1001 | 3 | 1.1.1000 | | 2 | 5.5.1021 | 3 | 1.1.1000 | | 3 | 1.1.1000 | 3 | 1.1.1000 | +---+----------+---+----------+ 我正在尝试构建一个查

我有一张看起来像的桌子

+-------+-----------+
| value | timestamp |
+-------+-----------+
+---+----------+---+----------+
| 1 | 1.2.1001 | 3 | 1.1.1000 |
| 2 | 5.5.1021 | 3 | 1.1.1000 |
| 3 | 1.1.1000 | 3 | 1.1.1000 |
+---+----------+---+----------+
我正在尝试构建一个查询,它给出如下结果

+-------+-----------+------------+------------------------+
| value | timestamp | MAX(value) | timestamp of max value |
+-------+-----------+------------+------------------------+
所以结果看起来像

+-------+-----------+
| value | timestamp |
+-------+-----------+
+---+----------+---+----------+
| 1 | 1.2.1001 | 3 | 1.1.1000 |
| 2 | 5.5.1021 | 3 | 1.1.1000 |
| 3 | 1.1.1000 | 3 | 1.1.1000 |
+---+----------+---+----------+
但我在用相应的时间戳连接专栏时遇到了困难

有什么提示或建议吗? 提前谢谢

如需了解更多信息,请: 在实际项目中,最大值通过GROUPBY子句按月和日分组,顺便说一句,这很有效,但不知何故,我在加入最大值的时间戳时遇到了困难

编辑

交叉联接是个好主意,但我希望按月份对它们进行分组,例如:

+---+----------+---+----------+
| 1 | 1.1.1101 | 6 | 1.1.1300 |
| 2 | 2.6.1021 | 5 | 5.6.1000 |
| 3 | 1.1.1200 | 6 | 1.1.1300 |
| 4 | 1.1.1040 | 6 | 1.1.1300 |
| 5 | 5.6.1000 | 5 | 5.6.1000 |
| 6 | 1.1.1300 | 6 | 1.1.1300 |
+---+----------+---+----------+
编辑2

我添加了一些示例数据和当前查询的示例。


如何将相应的时间戳添加到最大值?

尝试使用两个子查询进行交叉连接,第一个子查询选择所有记录,第二个子查询获取一行,表示最大值的时间戳,例如

SELECT col_value,col_timestamp,max_col_value, col_timestamp_of_max_value FROM table1
    cross join
      (
        select max(col_value) max_col_value ,col_timestamp col_timestamp_of_max_value  from table1
        group by col_timestamp
        order by max_col_value desc
        limit 1
      ) A --One row that represents the time_stamp of the max value, ie: <3;"1000-01-01">

使用窗口,因为您与pg一起使用

 Select *, max( value ) over (), max( timestamp ) over() from table
这将为您提供每行中所有值的最大值


您可以在查询时提供一些注释吗?@maxmomersteeg该查询表示两个子查询的交叉连接,第一个是所有记录,第二个是一行,表示最大值的时间戳,即:。一开始看起来不错,但如何按月份和年份分组?按col_时间戳分组,日期部分为“月”,col_时间戳不起作用……您似乎遗漏了模式定义/示例数据。如果没有有用的样本数据,帮助您工作就困难得多。这是有用的。否则,我们都必须制作自己的虚拟数据,减慢其他有用问题的回答速度。如果您碰巧编辑了您的问题以添加示例数据,请在您这样做之后进行评论,我会看一看。我添加了小提琴。希望helps@mjreaper如果我的答案是你想要的,你能验证一下吗!?