Ava*_*lla 5 mysql sql database select
我有一个包含 +/- 30 秒间隔的日期时间列和包含 10 到 100 之间随机数的值列的数据库。我的表如下所示:
datetime value
----------------------------
2016-05-04 20:47:20 12
2016-05-04 20:47:40 44
2016-05-04 20:48:30 56
2016-05-04 20:48:40 25
2016-05-04 20:49:30 92
2016-05-04 20:49:40 61
2016-05-04 20:50:00 79
2016-05-04 20:51:20 76
2016-05-04 20:51:30 10
2016-05-04 20:51:40 47
2016-05-04 20:52:40 23
2016-05-04 20:54:00 40
2016-05-04 20:54:10 18
2016-05-04 20:54:50 12
2016-05-04 20:56:00 55
Run Code Online (Sandbox Code Playgroud)
我想要以下输出:
datetime max_val min_val
-----------------------------------------
2016-05-04 20:45:00 92 12
2016-05-04 20:50:00 79 10
2016-05-04 20:55:00 55 55
Run Code Online (Sandbox Code Playgroud)
之前,我甚至可以继续获得最大值和最小值,我首先要GROUP的日期时间列分成5个分钟的间隔。根据我的研究,我想出了这个:
SELECT
time,
value
FROM random_number_minute
GROUP BY
UNIX_TIMESTAMP(time) DIV 300
Run Code Online (Sandbox Code Playgroud)
这实际上组的datetime列到5个分钟为间隔是这样的:
datetime
-------------------
2016-05-04 20:47:20
2016-05-04 20:50:00
2016-05-04 20:56:00
Run Code Online (Sandbox Code Playgroud)
这非常接近,因为它需要下一个最接近的日期时间到,在这种情况下,20:45:00
,20:50:00
等我想ROUNDDOWN的日期时间到最近的5分钟不分的秒,例如,如果分钟数:
minutes rounddown
--------------------
10 10
11 10
12 10
13 10
14 10
15 15
16 15
17 15
18 15
19 15
20 20
Run Code Online (Sandbox Code Playgroud)
时间可能是14:59,我想四舍五入到10:00。经过数小时的研究,我也尝试使用它:
SELECT
time,
time_rounded =
dateadd(mi,(datepart(mi,dateadd(mi,1,time))/5)*5,dateadd(hh,datediff(hh,0,dateadd(mi,1,time)),0))
Run Code Online (Sandbox Code Playgroud)
但遗憾的是,这并没有奏效。我收到此错误:
调用本机函数“datediff”时参数计数不正确
我也试过这个:
SELECT
time, CASE
WHEN DATEDIFF(second, DATEADD(second, DATEDIFF(second, 0, time_out) / 300 * 300, 0), time) >= 240
THEN DATEADD(second, (DATEDIFF(second, 0, time) / 300 * 300) + 300, 0)
ELSE DATEADD(second, DATEDIFF(second, 0, time) / 300 * 300, 0)
END
Run Code Online (Sandbox Code Playgroud)
返回相同的错误。
我怎样才能做到这一点?而在日期时间分组后,如何获取数据分组的最大值和最小值?
抱歉,如果我重复另一个答案。如果是的话我就删了..
SELECT FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(datetime)/300)*300) x
, MIN(value) min_value
, MAX(value) max_value
FROM my_table
GROUP
BY x;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5333 次 |
最近记录: |