[英]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.