【问题标题】:Retrieve highest value per n rows检索每 n 行的最大值
【发布时间】:2016-07-28 18:31:31
【问题描述】:

我有一个表,其中每一行都包含一个值和一个日期时间。它有数十万行。我想每 n 行选择最高(最大值)值。

我以前使用查询来获取每小时的最高值,但这并不是我想要的:

SELECT datetime, MAX(value)
FROM `table` 
GROUP BY date_format(datetime, '%Y-%m-%d &h')

任何建议将不胜感激!

【问题讨论】:

  • 如何指定for every n rows?它是基于日期时间还是其他一些标准?
  • 行按日期时间排序并编入索引。所以我想检索前 100 个值中的最大值,然后检索后 100 行中的最大值,依此类推。

标签: mysql sql


【解决方案1】:

您可以枚举行,然后聚合到您的心愿:

select min(rn), max(rn), min(datetime), max(datetime), max(value)
from (select t.*, (@rn := @rn + 1) rn
      from `table` t cross join
           (select @rn := 0) params
      order by datetime
     ) t
group by floor((rn - 1) / @n)
order by min(rn);

【讨论】:

  • 完美,正是我所追求的。谢谢!
猜你喜欢
  • 2015-07-31
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多