假设我们有一个名为data的表,其中有一个名为value的列表示数据值,还有一个名为timestamp的列表示数据的时间戳。我们可以使用以下SQL语句来计算当前时间前5条数据的平均值,并将结果插入当前数据的新列average中:

INSERT INTO data (value, timestamp, average)
SELECT value, timestamp, (
  SELECT AVG(value)
  FROM data
  WHERE timestamp <= NOW()
  ORDER BY timestamp DESC
  LIMIT 5
) AS average
FROM data
WHERE timestamp = NOW();

这个SQL语句中,我们首先使用子查询来计算当前时间前5条数据的平均值。子查询中的WHERE条件timestamp <= NOW()表示我们只取小于等于当前时间的数据,ORDER BY timestamp DESC表示按照时间戳逆序排序,LIMIT 5表示只取前5条数据。然后,我们使用主查询来插入当前数据,并将平均值作为新列average插入。

注意,上述SQL语句假设data表中已经存在当前时间的数据行,如果不存在则不会插入任何数据。如果需要在数据表中插入当前时间的新数据行,请先执行INSERT INTO data (value, timestamp) VALUES (NEW_VALUE, NOW())语句来插入新数据行,然后再执行上述SQL语句来计算平均值并更新average

mysql 计算当前时间前5条数据的平均值插入当前数据里

原文地址: https://www.cveoy.top/t/topic/itX9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录