从mysql表中获取年,月,周,日,小时,数据的最大值

时间:2014-03-27 23:58:45

标签: mysql max

我今天测试了很多,谷歌搜索得像地狱,但dint让它工作。我想查询我的数据库,并希望在一周工作日等时间恢复最高(最高值)。

表包含

date       time     id  val1    val2    val3
2014-02-11 09:20:05 1   0.5      0.1    0.4
2014-02-11 09:20:10 2   0.4      0.2    0.14
2014-02-11 09:20:15 3   0.7      0.4    1.7
2014-02-11 09:20:20 4   0.4      0.4    4.7
2014-02-11 09:20:25 5   0.6      0.8    8.7
2014-02-11 09:20:30 6   5.4      0.1    8.7
2014-02-11 09:20:35 7   0.9      0.8    1.5
2014-02-11 09:20:40 8   0.1      0.6    8.3
2014-02-11 09:20:45 9   0.5      0.8    4.7
2014-02-11 09:20:50 10   0.8      0.9    7.7
2014-03-24  14:30:15 656931 0.4     0.6    2.4 <- last row

知道我想获得每分钟的最大值val1

date       time     maxval1
2014-02-11 09:21 5.4 
2014-02-11 09:22 1.1 
2014-02-11 09:23 3.9 
2014-02-11 09:24 4.8 
2014-02-11 09:25 7.7 
2014-02-11 09:26 8.5 
2014-02-11 09:27 9.4... 

接下来我想得到每小时最大值val1

date       time     maxval1
2014-02-11 09:00 5.4 
2014-02-11 10:00 1.1 
2014-02-11 11:00 3.9 
2014-02-11 12:00 4.8 
2014-02-11 13:00 7.7 
2014-02-11 14:00 8.5 
2014-02-11 15:00 9.4...

2014-02-11 1.2
2014-02-12 4.4
2014-02-13 9.9
2014-02-14 6.4
2014-02-15 9.6
2014-02-16 4.7
2014-02-17 5.4...

2014-02 9.9
2014-03 4.4
2014-04 9.9
2014-05 9.4
2014-06 7.6
2014-07 6.7
2014-08 3.4...

最好是输出时间是unixtime(用于制图)

我已经为你编辑了这个问题

1 个答案:

答案 0 :(得分:0)

您要求“一周工作日等”的最大值我担心这是一个模糊的规范。

您可以像这样获得每天的最大值:

 SELECT date AS day,
        MAX(value1) AS maxval1
   FROM testdb
  GROUP BY date
  ORDER BY date

如果您有一个DATETIME列而不是单独的日期和时间列,那么整个过程会更容易,也更快。

您可以像这样获得每小时的最大值:

 SELECT DATE_FORMAT(STR_TO_DATE(CONCAT(date,' ',time)), '%Y-%m-&d %H:00:00') AS hour,
        MAX(value1) AS maxval1
   FROM testdb
  GROUP BY DATE_FORMAT(STR_TO_DATE(CONCAT(date,' ',time)), '%Y-%m-&d %H:00:00')
  ORDER BY DATE_FORMAT(STR_TO_DATE(CONCAT(date,' ',time)), '%Y-%m-&d %H:00:00')

在此查询中使用表达式

DATE_FORMAT(STR_TO_DATE(CONCAT(date,' ',time)), '%Y-%m-&d %H:00:00')

采用日期/时间组合并将其截断到最近一小时的顶部。例如,它将“2013-04-01 08:35:20”更改为“2013-04-01 08:00:00”

类似的表达式可以将时间戳截断为其他内容,例如一周(上周日午夜)或最近的四分之一小时。这是一些背景知识。 http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/