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 BYMAX() 函数一起使用。

例子:

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查询以查找列和行中的最大值

SQL 2000 UNION ALL 破坏查询优化

SQL 命令运行缓慢。需要帮助识别缓慢

sql语句 在一定的时间范围内 连续3天考试都满足 60分 如何写

如何通过 Oracle 中的 SQL 查询找到每个 id 的 TOP/MAX 值?

怎么查询SQL数据库中一行多列的数据中最大值?