簡體   English   中英

在mySql中獲得最大值的時間

[英]get time for max value in mySql

+-------------------+------+
| Time              | value| 
+-------------------+------+
| 2011-2-1 1:01:00  | 10.1 |
+-------------------+------+
| 2011-2-1 1:03:15  | 7.7  |
+-------------------+------+
| 2011-2-1 1:05:21  | 5.4  |
+-------------------+------+
| 2011-2-1 1:06:00  | 2.3  |
+-------------------+------+
| 2011-2-1 1:09:30  | 4.2  |
+-------------------+------+
| 2011-2-1 1:11:10  | 6.2  |
+-------------------+------+

我想獲得每5分鍾的最大值。 例如,

  • 在前5分鍾內,最大值為10.1

  • 在接下來的5分鍾內,最大值為4.2

另外,我還想為每個最大值獲取相應的“時間”。

非常感謝

您的select語句需要將所有時間按5分鍾間隔進行分組,然后將max()設為on。

討論MySQL中的分組時間:

http://forums.mysql.com/read.php?20,131939,131955#msg-131955

要進行五分鍾分組,請結合使用round()函數和unix_timestamp()

五分鍾:

round(unix_timestamp([time_field]) / 300)

綜上所述,您的選擇可能看起來像這樣(未經測試):

select
     round(unix_timestamp([time_field]) / 300) as Time,
     max(value) as Value
from
     [table_name]
group by
     round(unix_timestamp([time_field]) / 300)

幾種不同的方法可以做到這一點。

大多數情況下應該起作用的一種:

SELECT `Time`,`value`
FROM (SELECT `Time`,`value` FROM table ORDER BY `value` DESC) t2
GROUP BY UNIX_TIMESTAMP(`Time`) DIV 300

這取決於MySQL通常會選擇找到的第一行並根據group by返回它。 因此,內部查詢首先按值對其進行排序,以確保始終首先找到最大值。 (但是它並不完全可靠,因為mysql優化器最終可能會以不同的方式安排查詢。它沒有明確定義應返回哪一行。

如果這不適合您,請嘗試搜索Max-group-concat技巧。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM