sql查询在60秒内找到最大值
Posted
技术标签:
【中文标题】sql查询在60秒内找到最大值【英文标题】:Sql query to find max value within 60 seconds 【发布时间】:2016-10-19 06:45:01 【问题描述】:假设我有一个像下面这样的表(具有不同的 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 查询以获得所需的输出?
谢谢!!!
【问题讨论】:
重写问题并使用ozh.github.io/ascii-tables 【参考方案1】:这很简单。将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
【讨论】:
以上是关于sql查询在60秒内找到最大值的主要内容,如果未能解决你的问题,请参考以下文章
sql语句 在一定的时间范围内 连续3天考试都满足 60分 如何写