2011-05-17 24 views
1

我有多個值與不同的時間戳如下所示:如何在mysql中顯示每個最大值?

10 01:01:00 
20 01:35:00 
30 02:10:00 
05 02:45:00 
12 03:05:00 
21 03:30:00 
10 04:06:00 
40 05:15:00 

我沒有柱,我可以通過組,找到最大。我想獲得最大值(如30,21和40)的記錄。數據始終採用此格式,如增加值,然後再從零開始。什麼查詢會幫助我找到這些記錄?


爲了澄清,它是由時間戳排序,我想要得到的時間戳局部最大值,其中,下一行有一個更低的值的行:

value tmstmp 
----- -------- 
10  01:01:00 
20  01:35:00 
30  02:10:00 <-- this one since next value is 5 (< 30). 

05  02:45:00 
12  03:05:00 
21  03:30:00 <-- this one since next value is 10 (< 21). 

10  04:06:00 
40  05:15:00 <-- this one since next value is 40 (< infinity). 
+0

這兩列在表中是分開的還是它們是同一列? – 2011-05-17 07:54:35

+0

@wasimbhali,我(希望)澄清了這個問題,使其更清晰。如果我的假設不正確,請讓我知道。 – paxdiablo 2011-05-17 08:06:50

+0

是的,這是正確的,那就是我想要的! – wasimbhalli 2011-05-17 08:53:37

回答

0

不知你的問題是對我不清楚。 假設第一個列名是「value」,第二個列名是「timestamp」。

從時間戳組中選擇最大值(值)。

+0

請參閱我對原始問題的解釋,這就是我認爲OP的含義。 – paxdiablo 2011-05-17 08:07:16

+0

我不能按時間戳分組,因爲它們會有所不同 – wasimbhalli 2011-05-17 11:10:19

0

這個答案可能是有點晚了,但我想我已經找到了解決辦法

SELECT * FROM temp t1 WHERE value > 
    IFNULL(
    (SELECT value FROM temp t2 
    WHERE t2.tmstmp > t1.tmstmp ORDER BY t2.tmstmp ASC limit 1), 
    -1 
) 
ORDER BY tmstmp ASC 

澄清: 我覺得值,其中該值大於行中的下一個值。 爲了得到最終的值,我在子查詢周圍添加了一個IFNULL,以確保子查詢將返回-1

我看到的唯一問題是當時間流逝到第二天時,這就是爲什麼我希望你可以附加一個日期。

希望這仍然可以幫助其他人