我有一张类似
的表格+-------+-----------+
| value | timestamp |
+-------+-----------+
我正在尝试构建一个提供结果的查询,如
+-------+-----------+------------+------------------------+
| value | timestamp | MAX(value) | timestamp of max value |
+-------+-----------+------------+------------------------+
以便结果看起来像
+---+----------+---+----------+
| 1 | 1.2.1001 | 3 | 1.1.1000 |
| 2 | 5.5.1021 | 3 | 1.1.1000 |
| 3 | 1.1.1000 | 3 | 1.1.1000 |
+---+----------+---+----------+
但是我坚持用相应的时间戳加入列。
任何提示或建议? 提前谢谢!
有关详细信息(如果有帮助): 在实际项目中,max-values按月和日分组(使用group by子句,btw工作),但不知怎的,我不得不加入最大值的时间戳。
修改
交叉连接是一个好主意,但我希望按月分组,例如:
+---+----------+---+----------+
| 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
我为一些示例数据和当前查询的示例添加了一个小提琴。 http://sqlfiddle.com/#!1/efa42/1
如何将相应的时间戳添加到最大值?
答案 0 :(得分:2)
尝试使用两个子查询的交叉连接,第一个选择所有记录,第二个获得一行代表最大值的time_stamp,< 3;“1000-01-01”>例如。
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">
答案 1 :(得分:-1)
使用与pg一起使用的窗口
Select *, max( value ) over (), max( timestamp ) over() from table
它为您提供每行中所有值的最大值
http://www.postgresql.org/docs/9.1/static/tutorial-window.html