假设我有一个如下表(使用不同的ID)...这里例如99
...
id hist_timestamp DP mints Secnds value
99 2016-08-01 00:09:40 1 9 40 193.214
99 2016-08-01 00:10:20 1 10 20 198.573
99 2016-08-01 00:12:00 1 12 0 194.432
99 2016-08-01 00:52:10 1 52 10 430.455
99 2016-08-01 00:55:50 1 55 50 400.739
99 2016-08-01 01:25:10 2 25 10 193.214
99 2016-08-01 01:25:50 2 25 50 193.032
99 2016-08-01 01:34:30 2 34 30 403.113
99 2016-08-01 01:37:10 2 37 10 417.18
99 2016-08-01 01:38:10 2 38 10 400.495
99 2016-08-01 03:57:00 4 57 0 190.413
99 2016-08-01 03:58:40 4 58 40 191.936
这里我有一个value
列,从我需要在接下来的60秒内找到最大值的第一条记录开始,这将导致下面的结果。在这60秒的组中,我需要选择一个具有最大值的记录。
id hist_timestamp DP mints Secnds value
99 2016-08-01 00:10:20 1 10 20 198.573
99 2016-08-01 00:12:00 1 12 0 194.432
99 2016-08-01 00:52:10 1 52 10 430.455
99 2016-08-01 00:55:50 1 55 50 400.739
99 2016-08-01 01:25:10 2 25 10 193.214
99 2016-08-01 01:34:30 2 34 30 403.113
99 2016-08-01 01:37:10 2 37 10 417.18
99 2016-08-01 03:57:00 4 57 0 190.413
99 2016-08-01 03:58:40 4 58 40 191.936
如何构建SQL查询以获得所需的输出?
谢谢!!!
答案 0 :(得分:0)
GROUP BY
与MAX()
功能一起使用。
示例:
select max(value) as value
from table
where hist_timestamp between '2016-08-01 00:10:00' and '2016-08-01 00:10:59'
group by value
这为您提供了最大的唯一价值。希望它有所帮助
编辑:如果您需要更复杂的查询,例如从表格中的第一个日期开始每60秒的最大值,您需要例如递归CTE
或更复杂的查询group by