赞
踩
需求:hh_data表中有date_time和value两个主要业务字段,其中date_time颗粒度为小时,现需要将按序查询出的数据每相邻4条相加的sum(value)值并匹配第1个date_time的场景。
要实现上述描述的功能,在这里可以使用 MySQL 中的一些聚合函数和日期函数来计算指定时间段内每 4 个小时的数据总和,并使用第一个 datetime 来匹配这个和。
以下是一个sql示例查询,演示了如何实现这个功能:
SELECT
MIN(date_time) AS start_datetime,
SUM(value) AS total_value
FROM (
SELECT
date_time,
value,
FLOOR((ROW_NUMBER() OVER (ORDER BY date_time) - 1) / 4) AS group_num
FROM hh_data
WHERE date_time BETWEEN '开始时间' AND '结束时间' -- 替换为你想要查询的时间段
) AS subquery
GROUP BY group_num;
在这个查询中:
ROW_NUMBER() OVER (ORDER BY date_time)
用于为结果集中的每一行分配一个序号,按照 date_time字段的顺序排序。FLOOR((ROW_NUMBER() - 1) / 4)
将每一行分配到一个 group_num,每 4 个小时为一组。这个计算得到的结果将用于分组。请注意,你需要将 hh_data
替换为你的实际表名,并将 '开始时间'
和 '结束时间'
替换为你想要查询的时间段的起始时间和结束时间。此外,确保在 date_time字段上有索引,以确保查询的效率。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。