2014-01-10 27 views
1

我有一個表,看起來像加入時間戳列中的值是最大

+-------+-----------+ 
| 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 | 
+---+----------+---+----------+ 

但我被卡在與相應的時間戳加入列。

任何提示或建議? 在此先感謝!

欲瞭解更多信息(如果有幫助): 在實際項目中,最大值按月份和日期分組(按分組順序),但不知何故,我加入了最大時間戳 - 值。

編輯

交叉連接是一個好主意,但我想他們已經按月如分組:

+---+----------+---+----------+ 
| 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 | 
+---+----------+---+----------+ 

EDIT 2

我添加了一個小提琴對於一些示例數據和當前查詢的示例。 http://sqlfiddle.com/#!1/efa42/1

如何將相應的時間戳添加到最大值?

+0

你似乎已經離開了您的架構使用窗口定義/樣本數據。如果沒有有用的樣本數據可以幫助您解決問題要困難得多。 http://sqlfiddle.com/對此很有用。否則,我們都必須製作自己的虛擬數據,以減緩其他有用問題的回答。如果您碰巧編輯了您的問題以添加示例數據,請在此之後發表評論,然後我會看一看。 –

+0

我已經添加了小提琴。希望有幫助 – RalphP

+0

@mjreaper如果這是你正在尋找的東西,你能否請我驗證我的答案!? – Houari

回答

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"> 
+0

您能否提供一些評論以及您的查詢? – Max

+0

@MaxMommersteeg查詢表示一個包含兩個子查詢的交叉連接,第一個是所有記錄,第二個(A)獲取一行代表最大值的time_stamp,即:<3;「1000-01 -01" >。 – Houari

+0

首先看起來不錯,但是如何按月份和年份分組? (group by col_timestamp,date_part('month',col_timestamp))did'nt work ... – RalphP

相關問題