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/

相关文章:

php - 简单的 SELECT、GROUP、ORDER BY 查询未按预期运行

php - MySQL 错误 #1064 - 你的 SQL 语法有错误;

mysql - 如何在Mysql数据库上做营业额记录

sql - 从组内加入

php - Mysql - 在视口(viewport)内查找具有坐标的项目

php - 如何将此查询转换为 yii 查询?

sql - 如何在 SQL Developer Oracle 中不使用 MAX、LIMIT 或 ORDER BY 的情况下找到 Product 表中最昂贵的产品?

sql - 使用 PL SQL 的序列

mysql - 加速包含 100K+ 记录的 MYSQL 左连接查询

sql - 如何翻转 mysql 中数据结构为 : 'last name, first name' ? 的列