mysql : Get latest value and sum of values from previous hour

标签 mysql sql

我想退回产品及其最新值和上一小时的值。

我有一个产品表:

id, name, type (and so on)...

我有一个值(value)观表:

id_prod, timestamp, value

类似于:

12:00:00 = 10
12:15:00 = 10
12:30:00 = 10
12:45:00 = 10
13:00:00 = 10
13:15:00 = 10
13:30:00 = 10

我想要一个返回最新值 (13:30:00) 以及一小时前值总和的查询。这应该返回:

time = 13:30:00
latestread = 10
lasthour = 40

我几乎要做的工作是:

SELECT *,
(SELECT value FROM values S WHERE id_prod=P.id 
ORDER BY timestamp DESC LIMIT 1) as latestread,
(SELECT sum(value) FROM values WHERE id_prod=D.id and 
date_created>SUBTIME(S.date_created,'01:00:00')) as trendread 
FROM prod P ORDER BY name

但这会失败,并显示“'where 子句'中未知列'S.date_created'”

有什么建议吗?

最佳答案

如果我正确理解你想要做什么,那么你会得到类似的东西:

SELECT p.id, max(date_created), sum(value), mv.max_value
FROM product p
JOIN values v on p.id = v.product_id
JOIN (SELECT product_id, value as max_value
      FROM values v2
      WHERE date_created = (SELECT max(date_created) FROM values WHERE product_id=v2.product_id)) mv on product_id=p.id
WHERE date_created between DATE_SUB(now(), INTERVAL 1 HOUR)) and now()
GROUP BY p.id
ORDER BY p.id

关于mysql : Get latest value and sum of values from previous hour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21830476/

相关文章:

android - 存储任意排序顺序的最有效方法?

c# - 内连接后数据库表不显示数据

php - Mysql 日期字段搜索使用月份来查找即将到来的生日

sql - 使用 ORDER BY 和限制 1 优化 PostgreSQL 查询

java - 多线程提高性能

mysql - 插入另一列时重复 AUTO_INCRMENT Id?

mysql - 3 个连接的 mysql 表的最新记录

android - 更新和删除用于填充 UI 的 sqlite 数据库

php - 数据库拓扑设计困惑

sql - 在 SQL SERVER 中显示同一表中的行之间的差异